Français
Wünsche et Anregungen

Wunsch: experimental Funktion

 
- page 1 -


Gedanklich aus: [...] 

@Roland:

Lauter Funktionen quelle comment geschaffen sommes um erstmal dans un experimental-Funktion aufgenommen trop volonté - beispielsweise peux on avec XProfan OpenGL aucun positions- et farbgenauen Textausgaben erzeugen et einer einfachen Funktion (XProfan-Voir le texte source jadis vorhanden) gibts hierzu Abhilfe um avec OpenGL aussi belle Texteffekte et Textausgaben erzeugen trop peut comme alle anderen aussi 1faire (pas umsonst) sur une Font-Textur.

sur allemande: Roland bau doch s'il te plaît une Funktion qui zum Beispiel experimental heisst, et pour cet experimental s'il te plaît une pour
KompilierenMarqueSéparation
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


alors
KompilierenMarqueSéparation.

Beispielsweise empfinde je qui Implementierung einer Systemvariable $appDataDir im opposition trop solch zeitkritischen Dingen assez irritierend, là un $appDataDir selten sinnvoll dans Schleifen Verwendung trouver wird et un $appDataDir avec z.B. 3 eigenen XProfanzeilen trop ersetzen ist et qui Funktion hierfür déjà jahrelang überall rumbaumelt.

Peut-être es pas unsinnvoller, Funktionen trop implementieren, quelle wiederkehrende et zeitkritische Vorgänge abdecken, à Geschwindigkeit des XProfanprogrammes aussi plus konkurrenzfähig trop gestalten.

L'idée avec qui Experimental-Funktion ist imho eh bien déjà sur 1,5 Jahre vieux et j'ai - si je mich droite entsinne - noo Ideenfeedback. je voudrais pas commencer mir selbst comment une Nervensäge vorzukommen.
 
07.04.2009  
 



 
- page 1 -


Nachtrag:
iF
je voudrais pas commencer mir selbst comment une Nervensäge vorzukommen.

trop spät!
 
07.04.2009  
 



OGL.DRAWSYSTEXT hat aujourd'hui son 2 jähriges attendre sur une réaction aufgegeben, findet malheureusement seulement dans z.B. einer DLL son Zuhause.

Statt cette lauter Posts hätte je mir solch DLL juste écrivons peut, mais je voulais montrer quoi pour tolle Jeux on avec XProfan herstellen peux - avec reinem XProfan um besonders avec cela trop werben aussi im Spiel.
 
08.04.2009  
 




RGH
allô iF,

j'ai mich avec einer Kontainerfunktion experimental encore pas so droite anfreunden peut.
cela birgt doch qui péril, dass Source avec cette Funktion veröffentlicht volonté et cet aussi encore Monate et Jahre pour qui Veröffentlichung dans den Weiten des WWW (ou bien cette Community) herumgeistern. ensuite venons sûrement bientôt irgendwelche gens, qui cet herunterladen et ausprobieren voulons et wieder kurz avant einem Herzkasper stehen, weil cet experimentellen Kontainerfunktionen pas plus ou bien anders marcher et vous eh bien qui riesigen Quellcodes paraphraser doit.

trop Deiner OGL-Funktion: Füge doch la fois un kurzes XProfan-Beispielprogramm hinzu, avec dem on voit, quoi vous pouvoir et quoi ses Fähigkeiten demonstriert et erleutere ses paramètre la fois dans verständlichem (Hilfedatei-geeignetem) allemande. ensuite schaue je mir qui l'affaire la fois à et packe vous möglicherweise sur qui ToDo-liste pour qui prochain XProfan-Version. Versprochen!

Salut
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, qui/une Textur-Dossier beinhaltet alle Chars et qui Funktion zeichnet aus cette Chars entsprechend texturierte Vertexe sodass qui à qui Funktion übergebene String per OpenGL ausgegeben wird.

qui paramètre:

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

Optionale paramètre
SZ! : YX Skalierungsfaktor/Schriftgrösse
SZY! : Vertikal-Verzerrung pour typische Effekte
HOPX! : Sprungweite entre den Chars
SZX! : Horizontal-Verzerrung pour typische Effekte

qui obige Funktion ist (naturellement) optimiert sur schnelle Ausführung per XProfan - un Delphi ou bien C Code serait sûrement quelque chose anders programmiert plus Geschwindigkeit apporter. (z.B. sans MID$ dans qui Boucle)

cela dessus ist seulement une abgespeckte variante, cela Original hat encore une optionale xtraProcAddr um Textes z.B. simple de aussen Rotieren ou bien Knicken trop laisser.
KompilierenMarqueSéparation
Que le xtraProcAddr ist im Grunde une simple (zugleich mais äusserst wirkungsvolle) l'affaire, habe je mais malheureusement encore ne...aucune Feedback sur qui Frage si Du aus XProfan heraus une XProfan-Funktion appel peux en Adresse per ProcAddr bezogen wurde. (je crois mais: Bien sûr) tout autor habe je cette Part aus dem obigestem Code trop ogl.drawSysText erstmal herausgenommen aussi um pas völlig trop verwirren.

Ebenso - mais seulement um Beispiele trop appeler pour peut-être testweise implementierbare Funktionen - habe je Helfer-Schleifen (Funktionen) pour Terrainbildung sur einer Surface ou bien sur einem Sphere mühsam (pour mich mühsam) erstellt, qui Vorgang per XProfan unschön longtemps braucht mais nativ eingebunden (quoi imho un Klax ist) wäre es très bereichernd et weitere idées fördernd.

Zum Thema experimental: c'est un Gedankenanstoss!

Ähnlich comme z.B. dans OpenGL-Umsetzungen experimentelle Funktionen gibt avec Vorzeichen des Experimenterfinders nvx_* ata_* wäre es peut-être entier pratique si Du Funktionen - z.B. quelle erstmalig dans einer Version trop Versuchszwecken implementiert wurden - Schonmal anbietest mais erklärst: ne...aucune Soutien/ aucun garantie/ Experimentalfunktionen.

Gedacht hierfür J'ai eu (naturellement) une Kontainerfunktion um aucun IDs trop verbraten - je mais glaube (malheureusement _auch pas _weiss, weil ne...aucune Response trop [...]  ), dass es un IDs-Problem pas plus gibt.

peut-être alors aussi simple durchzählen alors experimental(1..x,param1..x).

trop den Codes qui ensuite rumschwirren: là es (ne...aucune?) IDs-Problem gibt sollte es rien ausmachen, une später komplett integrierte Version einer Funktion aussi später encore per Kontainerfunktion experimental aufrufbar trop gestalten.

qui seule technische le tort qui sich mir erschließt wäre, dass qui Runtime um un paire Byte à Grösse gewinnt.

quoi wäre optimal: si un quelqu'un une tolle Funktion postet avec s'il te plaît um Antestung einer leichtfüssigen intégration pour plus Geschwindigkeit: bien sûr, ne...aucune Problem pour Roland - ab pour experimental. peut-être entsteht ensuite aus qui une ou bien anderen experimentellen Funktion - quelle sich vlt. aussi déjà dans lauter Versionen behauptet hat - une neue echte Funktion.

2011 ensuite gleiche Stelle gleiche onde?

RGH
allô iF,

j'ai mich avec einer Kontainerfunktion experimental encore pas so droite anfreunden peut.


ensuite nenne vous doch RGH! (Mir ist déjà bien sûr, dass es Dir pas à Benennung allez, je trouve experimental aussi doof...)
 
08.04.2009  
 




RGH
allô iF,
es fehlt mir toujours un Beispielcode, um obige (entier large obige) Funktion la fois auszuprobieren et dans Aktion trop voyons.
Salut
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 seulement Zuhause mon /develope - je bau Dir quoi Schönes hierzu zurecht.

Rumstreunende (et kompilierte) Beispiele gibts dans qui Community cependant quelques, z.B. De toute façon si je cela Thema versuchte wieder (prudent) anzustreifen.

cependant wäre es joli pour mich trop savons, si je einer XProfan-Funktion une avec ProcAddr bezogene Funktionsadresse transfert peux sodass cet per ProcAddr bezogene Funktion ensuite de qui nativen XProfan-Funktion im Bedarfsfall fonctionnement volonté pourrait. (Callbacks si Du so vouloir.)

ensuite serait je nämlich lieber juste qui variante _mit xtraProcAddr traduit beispielisieren, gingen par-dessus ensuite tolle effet comment z.B. sich um un centre drehende Chars ou bien Chars sur Sinuswelle etc..

seulement sans qui nativ vorliegende Hilfsfunktion im XProfan malheureusement pas wirklich dans z.B. Spielen zeitkritisch et effectif einsetzbar.
 
08.04.2009  
 




RGH
Salut,
je serait d'abord la première variante (sans cet ProcAddr-Geschichte) préférer et la fois anschauen, si daraus quoi pour XProfan 12 volonté peux.
Salut
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  
 



une durchdachtere variante wäre une oglDrawTiles-Funktion, pour qui je la fois un Minimalbeispiel (haha) aufbereitet habe:
KompilierenMarqueSéparation
 {$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/loop/'>loop) Wend endproc

Wohlbemerkt es seulement à Funktion ogl.drawTiles ginge. (avec ou bien sans extraproc)

So peux on près de qui Nützlichkeit vite Tiles anzuzeigen cet Funktion aussi pour qui schnelle derartige Textausgabe einsetzen.

1.033 kB
Hochgeladen:09.04.2009
Downloadcounter124
Download
1.034 kB
Hochgeladen:09.04.2009
Downloadcounter109
Download
 
09.04.2009  
 



j'ai den Beispielquelltext pour oglDrawTiles nochmals révisée/aktualisiert, à qui Funktion ogl.drawTiles selbst hat sich rien geändert.

Im Interpreter erreiche chez dem neuen Beispiel 4 FPS et Runtime à 20 FPS.

Wäre ogl.drawTiles nativ serait qui Interpreter chez mir ~20 FPS et qui Runtime chez abgeschaltetem VSync ~110 FPS erreichen quoi naturellement super wäre.
 
09.04.2009  
 



sur Pentium 4 avec 3.4 GHz pour Compilierung avec XPSE+XProfancompiler heiße 4 Fps (
mais seulement pour long Vorausberechnungszeit de ca 10 sec... Hmmmmmm...
 
16.04.2009  
 




Nico
Madysa
1 - dans Worten: un - Frame(s) pro Sekunde; aufgerundet, versteht sich.
Sitze ici mais aussi à einem 450-MHz-calculateur et Windows 2000.
 
Nico Madysa
17.04.2009  
 



 
- page 2 -


seulement
KompilierenMarqueSéparation
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!

='./../../function-references/XProfan/endproc/'>endproc

devrait nativ son et cela Problem wäre Geschichte, aussi avec ausgebauten tileOutCallBack immernoch pour vieles (comment Textausgaben) important.
 
17.04.2009  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Schrift  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

6.564 Views

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

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie