Español
Wünsche y Sugerencias

Wunsch: experimental Función

 
Gedanklich de: [...] 

@Roland:

Lauter Características welche como geschaffen son en primero en un experimental-Función aufgenommen a voluntad - por ejemplo puede ser con XProfan OpenGL no positions- y farbgenauen Textausgaben erzeugen y uno einfachen Función (XProfan-Ver código fuente längst disponible) gibts hierzu Abhilfe hacer frente a OpenGL auch schöne Texteffekte y Textausgaben erzeugen a puede como todos otro auch tun (no umsonst) una Font-Textur.

Auf Alemán: Roland bau pero por favor una Función el para Ejemplo experimental heisst, y para esta experimental Por favor, una para
KompilierenMarcaSeparación
proc OGL.DRAWSYSTEXT

    PARAMETERS X!,Y!,TXT$,SZ!,SZY!,HOPX!,SZX!

    IF %PCOUNT<7

        SZX!=1

    ENDIF

    IF %PCOUNT<6

        HOPX!=1

    ENDIF

    IF %PCOUNT<5

        SZY!=1

    ENDIF

    IF %PCOUNT<4

        SZ!=1

    ENDIF

    HOPX!=HOPX!*SZ!
    SZX!=SZX!*SZ!
    var XX!=X!+32*SZX!
    var YY!=Y!+32*SZ!*SZY!
    var TX!=0
    var TY!=0
    var TXX!=0
    var TYY!=0
    var COLUMN&=0
    var ROW&=0
    var O&=0
    var C&=LEN(TXT$)
    OGL(push)
    OGL(texture,OGL.TEXSYSFNT&,1)
    HOPX!=16*HOPX!

    WHILELOOP C&

        O&=ORD(MID$(TXT$,&LOOP,1))
        COLUMN&=O&16
        ROW&=O&-COLUMN&*16
        TX!=0.0625*COLUMN&-0.005
        TY!=0.0625*(16-ROW&-1)-0.005
        TXX!=TX!+0.0625
        TYY!=TY!+0.0625
        OGL(glBegin,7)
        OGL(glTexCoord2f,TX!,TYY!)
        OGL(glVertex3f,X!,Y!,0)
        OGL(glTexCoord2f,TXX!,TYY!)
        OGL(glVertex3f,XX!,Y!,0)
        OGL(glTexCoord2f,TXX!,TY!)
        OGL(glVertex3f,XX!,YY!,0)
        OGL(glTexCoord2f,TX!,TY!)
        OGL(glVertex3f,X!,YY!,0)
        OGL(glEnd)

    ENDWHILE

    OGL(pop)
    RETURN HOPX!

 href='./../../function-references/XProfan/ENDPROC/'>ENDPROC


Also
KompilierenMarcaSeparación.

Por ejemplo empfinde Yo el Implementierung uno Systemvariable $appDataDir en el Gegensatz a solch zeitkritischen Dingen bastante irritierend, como una $appDataDir selten sinnvoll en Schleifen Verwendung encontrar se y una $appDataDir con z.B. 3 eigenen XProfanzeilen a sustituir es y el Función esta ya jahrelang überall rumbaumelt.

Tal vez no unsinnvoller, Características a implementieren, welche wiederkehrende y zeitkritische Vorgänge abdecken, a Geschwindigkeit des XProfanprogrammes auch más konkurrenzfähig a gestalten.

La idea con el Experimental-Función es mi humilde opinión nun ya encima 1,5 Jahre alt y yo habe - si yo mich bastante entsinne - noo Ideenfeedback. Yo möchte no beginnen me incluso como una Nervensäge vorzukommen.
 
07.04.2009  
 



Apéndice:
IF
Yo möchte no beginnen me incluso como una Nervensäge vorzukommen.

Zu spät!
 
07.04.2009  
 



OGL.DRAWSYSTEXT ha heute ser 2 jähriges Esperar en una Reacción aufgegeben, findet desafortunadamente sólo en z.B. uno DLL ser Zuhause.

Statt dieser lauter Beiträge hätte Yo solch DLL igual escribir puede, pero yo quería zeigen qué para tolle Juegos uno con XProfan herstellen kann - con reinem XProfan en besonders así a werben auch en el Spiel.
 
08.04.2009  
 




RGH
Hola si,

Yo mich con uno Kontainerfunktion experimental no tan bastante anfreunden puede.
Das birgt doch el Gefahr, dass Fuente con dieser Función veröffentlicht y ser esta auch todavía Monate y Jahre después de el Veröffentlichung en el Weiten des WWW (oder dieser Comunidad) herumgeistern. Dann kommen sicher bald irgendwelche Personas, el esta herunterladen y ausprobieren querer y otra vez kurz antes una Herzkasper posición, porque esta experimentellen Kontainerfunktionen no o más anders trabajo y ellos nun el riesigen Quellcodes umschreiben necesario.

Zu Deiner OGL-Función: Füge doch veces una kurzes XProfan-Beispielprogramm hinzu, con el uno sieht, qué ellos macht y qué ihre Fähigkeiten demonstriert y erleutere ihre Parámetro veces en verständlichem (Hilfedatei-geeignetem) Alemán. Dann schaue Yo el Sache veces a y packe ellos möglicherweise en el ToDo-Liste para el nächste XProfan-Versión. Versprochen!

Saludo
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
08.04.2009  
 



Schrift/Textausgaben malen, el/una Textur-Expediente beinhaltet todos Chars y el Función características de esta Chars entsprechend texturierte Vertexe sodass el a el Función übergebene String por OpenGL ausgegeben se.

El Parámetro:

X!,Y! : Position des auszugebenen Textes
TXT$ : Auszugebener Texto

Optionale Parámetro
SZ! : YX Skalierungsfaktor/Schriftgrösse
SZY! : Vertikal-Verzerrung para typische Effekte
HOPX! : Sprungweite zwischen el Chars
SZX! : Horizontal-Verzerrung para typische Effekte

El obige Función es (natürlich) optimiert en schnelle Ausführung por XProfan - una Delphi oder C Code sería sicher algo anders programmiert mehr Geschwindigkeit bringen. (z.B. sin MID$ en el Bucle)

Das oben es sólo una abgespeckte Variante, el Original ha ni optionale xtraProcAddr en Textos z.B. simplemente de aussen Rotieren oder Knicken que se.
KompilierenMarcaSeparación
Que el xtraProcAddr es en el Grunde una einfache (zugleich aber äusserst wirkungsvolle) Sache, Yo aber desafortunadamente todavía kein Feedback en el Cuestión si Usted de XProfan heraus una XProfan-Función aufrufen kannst deren Adresse por ProcAddr bezogen wurde. (Yo glaube aber: Natürlich) Darum Yo esta Part de el obigestem Code a ogl.drawSysText primero herausgenommen auch en no völlig a verwirren.

También - aber sólo en Beispiele a nennen para tal vez testweise implementierbare Características - Yo Helfer-Schleifen (Características) para Terrainbildung en uno Fläche oder en una Sphere mühsam (para mich mühsam) erstellt, el Vorgang por XProfan unschön largo braucht aber nativ eingebunden (qué imho una Klax es) wäre lo muy bereichernd y weitere Ideen fördernd.

Zum Thema experimental: Es una Gedankenanstoss!

Ähnlich como z.B. en OpenGL-Umsetzungen experimentelle Características son con Vorzeichen des Experimenterfinders nvx_* ata_* wäre lo tal vez bastante praktisch si Características - z.B. welche erstmalig en uno Versión a Versuchszwecken implementiert fueron - schonmal anbietest aber erklärst: Kein Apoyo/ Keine Garantie/ Experimentalfunktionen.

Gedacht esta Tuve (natürlich) una Kontainerfunktion en no IDs a verbraten - Yo aber glaube (desafortunadamente _auch no _weiss, porque kein Response a [...]  ), dass lo una IDs-Problema no mehr son.

Tal vez also auch simplemente durchzählen also experimental(1..x,param1..x).

Zu el Codes el entonces rumschwirren: Como lo (kein?) IDs-Problema son debería lo nichts ausmachen, una später komplett integrierte Versión uno Función auch später todavía por Kontainerfunktion experimental aufrufbar a gestalten.

Der einzig technische Nachteil el se me erschließt wäre, dass el Runtime en unos pocos Byte a Grösse gewinnt.

Was wäre optimal: Wenn una alguien una tolle Función postet con Bitte en Antestung uno leichtfüssigen Integrierung para mehr Geschwindigkeit: Klar, kein Problema para Roland - de después de experimental. Tal vez entsteht entonces de el una oder otro experimentellen Función - welche se vlt. auch ya en lauter Versionen behauptet ha - una neue echte Función.

2011 entonces gleiche Punto gleiche Welle?

RGH
Hola si,

Yo mich con uno Kontainerfunktion experimental no tan bastante anfreunden puede.


Dann nenne ellos doch RGH! (Mir es ya klar, dass lo No a Benennung va, Yo finde experimental auch doof...)
 
08.04.2009  
 




RGH
Hola si,
lo fehlt me siempre todavía una Beispielcode, en obige (bastante weit obige) Función veces auszuprobieren y Aktion a sehen.
Saludo
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
08.04.2009  
 



Jupp, habe sólo Zuhause mein /develope - Yo bau Usted qué Schönes hierzu zurecht.

Rumstreunende (y kompilierte) Beispiele gibts en Comunidad sin embargo algunos, z.B. De todos modos si yo el Thema versuchte otra vez (vorsichtig) anzustreifen.

Jedoch wäre lo schön para mich a wissen, si Yo uno XProfan-Función una con ProcAddr bezogene Funktionsadresse transferencia kann sodass esta por ProcAddr bezogene Función entonces de el nativen XProfan-Función en el Bedarfsfall ausgeführt voluntad podría. (Callbacks si así möchtest.)

Dann sería Yo nämlich más bien igual el Variante _mit xtraProcAddr traducido beispielisieren, gingen darüber entonces tolle Effekt como z.B. son una Zentrum drehende Chars oder Chars en Sinuswelle etc..

Nur sin la nativ vorliegende Hilfsfunktion en el XProfan por desgracia, no wirklich en z.B. Spielen zeitkritisch y effektiv einsetzbar.
 
08.04.2009  
 




RGH
¡Hola,
Yo sería zuerst el erste Variante (sin esta ProcAddr-Geschichte) vorziehen y veces anschauen, si lo qué para XProfan 12 voluntad kann.
Saludo
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
08.04.2009  
 



Un durchdachtere Variante wäre una oglDrawTiles-Función, para el Yo veces una Minimalbeispiel (haha) aufbereitet habe:
KompilierenMarcaSeparación
 {$iq}
def &screenX 1024
def &screenY 768
window &screenX,&screenY
hWnd.setInnerSize(&screenX,&screenY)
var hPic&=create(hNewPic,512,512,0)
var y&=
startPaint hPic&
useFont fixedsys,1,0,0,0,0
textColor $FFFFFF,-1

whileLoop 256

    drawText &loop mod 16*32,&loop16*32,chr$(&loop+1)

wend

endPaint
savepic fixedsys.bmp,hpic&
startpaint hPic&
cls $008800
usePen 0,0,$33BB33

whileLoop 0,16

    line &loop*32,0 - &loop*32,512
    line 0,&loop*32 - 512,&loop*32

wend

usePen 0,0,$006611

whileLoop 0,16

    line 0,(&loop*32-1) - 512,(&loop*32-1)
    line (&loop*32-1),0 - (&loop*32-1),512

wend

whileLoop 5000

    setPixel rnd(512),rnd(512),$55EE55

wend

savepic grid.bmp,hpic&
deleteObject hPic&
//
ogl(init,%hWnd,0,0,0,0)
var meineTiles&=ogl(loadTextureBMP,fixedsys.bmp,1)
var meineTiles2&=ogl(loadTextureBMP,grid.bmp,1)
ogl(posMode,1)
var myList&=ogl(startList)
var s$=

whileLoop 16

    s$=

    whileLoop 16

        s$=s$+chr$(&loop+y&*16)

    wend

    ogl.drawTiles(0,100+y&*16,s$,16,32,1,0.25)
    inc y&

wend

ogl(endList)
var pa&=procAddr(myOGLTileOutCallBackProc,4)
var fps&=0
var fpsT&=&getTickCount+1000
var fpsC&=0

while 1

    inc fpsC&

    if fpsT&<&getTickCount

        inc fpsT&,1000
        fps&=fpsC&
        fpsC&=0

    endif

    ogl(clear)
    ogl(move,0,0,-5)
    ogl(texture,meineTiles&,1)
    ogl(color,0,0,1,1)
    ogl(rotate,&getTickCount/700,&getTickCount/500,&getTickCount/300)
    ogl(cuboid,1,1,1)
    ogl(color,1,1,1,1)
    ogl.2d()
    ogl(drawList,myList&)
    ogl.drawTiles(0,0,ABC Hallo Welt: +str$(&getTickCount),16,32,1,0.25)
    ogl.drawTiles(0,200,ABC Hallo Welt: +str$(&getTickCount),16,32,4,0.25,pa&)
    ogl(color,0,1,0,1)
    ogl.drawTiles(0,500,FPS: +str$(fps&),16,32,1,0.25)
    ogl(color,1,1,1,1)
    ogl(texture,meineTiles2&,1)

    whileLoop 16

        ogl.drawTiles(650,5+&loop*32,chr$(&loop*4)+chr$(&loop*4+1)+chr$(&loop*4+2)+chr$(&loop*4+3),16,32)

    wend

    testCorrectOriginLines()
    ogl(show)
    case %mousePressed=2 : break

wend

//ogl(deleteTexture,1)
ogl(done)
end

proc myOGLTileOutCallBackProc

    parameters x&,y&,c&,o&
    ogl(move,c&*35,sin(c&+&getTickCount*0.003)*10+350,0)
    //ogl(color,rnd(2),rnd(2),rnd(2),1)

endproc

proc ogl.drawTiles

    parameters x!,y!,tiles$,tilesPerRow&,pixelPerTile&,scaleF!,dropF!,tileOutCallBack&
    case %pCount<8 : tileOutCallBack&=0
    case %pCount<7 : dropF!=1
    case %pCount<6 : scaleF!=1
    var c&=len(tiles$)
    casenot c& : return x!
    var COLUMN&=0
    var ROW&=0
    var TX!=0
    var TY!=0
    var TXX!=0
    var TYY!=0
    var o&=0
    var f!=(1/tilesPerRow&)
    var xx!=x!+pixelPerTile&*scaleF!
    var yy!=y!+pixelPerTile&*scaleF!
    ogl(push)

    whileLoop c&

        o&=ord(mid$(tiles$,&loop,1))-1
        row&=o&*f!
        column&=o&-row&*tilesPerRow&
        tx!=f!*column&
        ty!=f!*(tilesPerRow&-row&-1)
        txx!=tx!+f!
        tyy!=ty!+f!
        messagebox str$(tx!)+ +str$(ty!)+ +str$(txx!)+ +str$(tyy!),,0

        if tileOutCallBack&

            ogl(push)
            call(tileOutCallBack&,int(x!),int(y!),&loop,o&)

        endif

        oGL(glBegin,~GL_QUADS)
        oGL(glTexCoord2f,tx!,tyy!)
        oGL(glVertex3f,x!,y!,0)
        oGL(glTexCoord2f,txx!,tyy!)
        oGL(glVertex3f,xx!,y!,0)
        oGL(glTexCoord2f,txx!,ty!)
        oGL(glVertex3f,xx!,yy!,0)
        oGL(glTexCoord2f,tx!,ty!)
        oGL(glVertex3f,x!,yy!,0)
        ogl(glEnd)

        ifnot tileOutCallBack&

            ogl(move,pixelPerTile&*dropF!*scaleF!,0,0)

        else

            ogl(pop)

        endif

    wend

    OGL(pop)
    RETURN pixelPerTile&*c&*dropF!*scaleF!

endproc

proc ogl.2d

    ogl(origin,0,0,0)
    ogl(posmode,1)
    ogl(glMatrixMode,~GL_PROJECTION)
    ogl.ortho(0,&screenY,&screenX,0,0,256)

endproc

proc ogl.ortho

    parameters x&,y&,xx&,yy&,z&,zz&
    ogl(glLoadIdentity)
    ogl(glViewport,0,0,&screenX,&screenY)
    declare m#
    dim m#,48
    float m#,0 =x&,xx&,y&,yy&,z&,zz&
    ogl(glOrtho,long(m#,0 ),long(m#,4 ),long(m#,8 ),long(m#,12),long(m#,16),long(m#,20),long(m#,24),long(m#,28),long(m#,32),long(m#,36),long(m#,40),long(m#,44))
    dispose m#

endproc

proc hWnd.setInnerSize

    parameters x&,y&
    setwindowpos %hWnd = %winLeft,%winTop - ((%winRight-%winLeft)-(width(%hWnd)-x&)),((%winBottom-%winTop)-(height(%hWnd)-y&));0

endproc

proc ogl.line

    parameters x!,y!,xx!,yy!
    ogl(glBegin,~GL_LINES)
    ogl(glVertex3f,x!,y!,)
    ogl(glVertex3f,xx!,yy!,)
    ogl(glEnd)

endproc

proc testCorrectOriginLines

    ogl(color,1,1,1,1)

    whileLoop 0,&screenX,2

        ogl.line(&loop,0,&loop,&screenY)

    wend

    whileLoop 0,&screenY,2

        ogl.line(0,&loop,&screenX<
a class=s4 href='./../../function-references/XProfan/bucle/'>bucle) wend ENDPROC

Wohlbemerkt lo sólo a Función ogl.drawTiles ginge. (con oder sin extraproc)

So puede ser neben el Nützlichkeit rápidamente Tiles anzuzeigen esta Función auch para rápido derartige Textausgabe einsetzen.

1.033 kB
Hochgeladen:09.04.2009
Ladeanzahl116
Descargar
1.034 kB
Hochgeladen:09.04.2009
Ladeanzahl101
Descargar
 
09.04.2009  
 



Yo habe el Beispielquelltext para oglDrawTiles nochmals überarbeitet/aktualisiert, a el Función ogl.drawTiles incluso ha se nichts geändert.

Im Interpreter erreiche en el neuen Ejemplo 4 FPS y Runtime a 20 FPS.

Wäre ogl.drawTiles nativ sería el Interpreter en me ~20 FPS y el Runtime en abgeschaltetem VSync ~110 FPS erreichen qué natürlich klasse wäre.
 
09.04.2009  
 



Auf Pentium 4 con 3.4 GHz después de Compilierung con XPSE+XProfancompiler heiße 4 Fps (
Aber sólo después de langer Vorausberechnungszeit de ca 10 sec... Hmmmmmm...
 
16.04.2009  
 




Nico
Madysa
1 - en Worten: una - Frame(s) pro Sekunde; aufgerundet, versteht se.
Sitze hier aber auch a una 450-MHz-Rechner y Windows 2000.
 
Nico Madysa
17.04.2009  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Schrift  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

6.420 Views

Untitledvor 0 min.
Jörg Sellmeyer09.09.2014
H.Brill31.08.2014
iF13.05.2013
p.specht15.04.2013
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie