| |
|
|
- Página 1 - |
|
Uwe ''Pascal'' Niemeier | ¡Hola Personas!
Tuve endlich Gelegenheit, el OpenGL-Características a testen y voluntad veces unos pocos Kommentare dazu absondern. Hay auch unos pocos Propuestas y algo Kritik esta. Yo hoffe, antes allem letzteres es con Wohlwollen aufgenommen
Allgemein: Mir es aufgefallen,dass algunos profano-propio ogl-Características no bastante con el gleichnamigen Original-APIs identisch son. Das macht lo schwer para Personas, el irgendwelche Demos traducir querer oder en otro Programmiersprachen ya con oGL gearbeitet haben. Tal vez lässt se como todavía qué nachbessern, oder lo muss en el späteren Ayuda entsprechend nachdrücklich en solche Abweichungen hingewiesen voluntad.
Hier unos pocos Details:
ogl(Irgendein Objeto,...) En Übersetzung meiner Ballerspiel-Demos Yo 1 Stunde gegrübelt, por qué mi Asteroiden así komisch por el Gegend eiern, a Yo el Fussnote en el OpenGL.txt gefunden habe: En Erzeugung uno Objektes por glu-API liegt el Körpermittelpunkt en el Nullpunkt des Koordinatensystems, en RGH el unterste Punkt des Körpers Will uno z.B. una Kugel en ihren Mittelpunkt rotieren dejar, muss uno ellos also sólo en ihren Radius después de unten mover. Ziemlich lästig...
ogl(CLEAR) Entspricht no ogl-API glClear; zusätzlich para Löschen el Grafik se auch el Koordinatensystem zurückgesetzt (Ist como todavía una glLoadIdentity instalado?) El Folge es, dass en uno Bucle con CLEAR no relativen Transformationen posible son, sólo absolute. Ejemplo RGH-ogl:
[box:03f4aca031]window 50,50-500,500 ogl(Init,%hwnd,0,0,0,1) declarar R% mientras que 1 caso R%=360:R%=0 inc R% ogl(clear) ogl(move,0,0,-3) ogl(rotate,0,R%,0) ogL(sphere,0.5,4,2) ogl(show) endwhile[/box:03f4aca031] Ejemplo Standart-ogl: [box:03f4aca031]window 50,50-500,500 oGL(Init,%hwnd,0,0,0,1) ogl(move,0,0,-3) mientras que 1 ogl(glClear,~GL_COLOR_BUFFER_BIT | ~GL_DEPTH_BUFFER_BIT) ogl(rotate,0,1,0) ogL(sphere,0.5,4,2) ogl(show) endwhile[/box:03f4aca031] Im 2. Ejemplo se el ogl-Bildschirm zwar gelöscht, el Matrix pero no zurückgesetzt, sodass ROTATE cada Durchlauf en el ya gedrehte Szene angewendet se.
Vorschlag: CLEAR debería se sólo el Löschen des Bildes beschränken, dafür podría uno glLoadIdentity kapseln, z.B. como ogl(RESETCOORD) más o menos.
ogl(ORIGIN,...) Besteht anscheinend de glLoadIdentity + glTranslate (MOVE), setzt Así que el Koordinaten en absolute Werte. Könnte entfallen, si ogl(RESETCOORD) gäbe.
ogl(STARTLIST) Gibt una Integer-Namen para el DisplayList zurück. Das bedeutet aber, dass uno en más DLs el jeweiligen Namen z.B. en un Array ablegen muss, en volle Kontrolle a haben. Besser wäre, el Namen incluso vorzugeben, como en el Original-API. So saber uno siempre, como welche DL anzusprechen wäre, ausserdem podría uno una ya creado DL überschreiben. Como wäre una optionaler Parámetro iName% ? Ausserdem fehlt ni Kapselung de glDeleteList.
oGL(LOADTEXTUREBMP,...) Hier gilt el Gleiche como para STARTLIST; el IntegerName se de Profano vorgegeben, podría aber auch vom User zugeteilt voluntad. Arrays könnten entfallen. Texturen könnten z.B. en uno Bucle creado y ser wären entonces encima ihre Nummerierung a erreichen. BTW: Un Alternative, en bmp-Handles a verarbeiten, wäre auch no schlecht
ogl(2D,...) Sehe Yo el correcto, dass hier para 1. Tiempo el Rückgabewerte uno Función direkt en vorgegebene Zielvariablen geschrieben voluntad?? Sehr gewöhnungsbedürftig! BTW: El entsprechende Umkehrfunktion wäre auch muy nützlich!
ogl(TESTMOUSE,...) & ogl(TESTXY,...) Wenn uno en letzterem el Mausposition übergibt, puede ser se ersteres sparen...
ogl(STARTTEST,...) & ogl(ENDTEST) Praktischer wäre, si uno hier una Rechteck vorgeben podría como en el Original-API. Dann entspräche el Ganze praktisch el alten @Ratón-Función. Wer una Punkt testen voluntad, de hecho puede Start- y Endpunkte des Rechtecks übereinanderlegen.
Soviel fürs erste. Bin en Kommentare gespannt (antes allem de Roland) PS: Werde demnächst todavía unos pocos angepasste Demos puesto.
SeeYou Pascal |
|
|
| |
|
|
|
| |
|
- Página 2 - |
|
| Läuft con usted el mitgelieferte Demo lesson13a.prf sin Choque? |
|
|
| |
|
|
|
Frank Abbing | Pascal, poner el -7 veces en Klammern, entonces debería lo ir. Posesiones en media Tests todavía algunos dieser Stolperstellen entdeckt y Roland auch gemeldet. Bin sicher, dass él ellos bald korrigiert ha. |
|
|
| |
|
|
|
RGH | [quote:60ba900c81=Uwe Pascal Niemeier] ogl(STARTLIST) Gibt una Integer-Namen para el DisplayList zurück. Das bedeutet aber, dass uno en más DLs el jeweiligen Namen z.B. en un Array ablegen muss, en volle Kontrolle a haben. Besser wäre, el Namen incluso vorzugeben, como en el Original-API. So saber uno siempre, como welche DL anzusprechen wäre, ausserdem podría uno una ya creado DL überschreiben. Como wäre una optionaler Parámetro iName% ?[/quote:60ba900c81] Su Spieledemo con el Asteroiden ha mich überzeugt, daß el doch sinnvoll es. Ab el nächsten Subscriptionsversion (el 11.) hay diesem optionalen Parámetro. Ohne esta Parámetro es con glGenList el nächste freie Listennummer ermittelt, con Parámetro se eben esta Nummer benutzt.
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 | 22.05.2006 ▲ |
|
|
|
|
RGH | [quote:47f614c4dd=Uwe Pascal Niemeier]Wenn Yo dieses Ventana en el Hintergrund schicke (z.B. indem Yo en el dahinterstehende Editorfenster klicke), bekomme Yo una heftige Fehlermeldung. OK, el Code como solcher Aunque bastante sinnlos, aber deshalb igual una Gleitkomma-Fehler? Oder Yo qué übersehen?[/quote:47f614c4dd] Hm, en me se ejecuta lo völlig problemlos.
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 | 22.05.2006 ▲ |
|
|
|
|
RGH | [quote:b4209c4237=Uwe Pascal Niemeier][quote:b4209c4237]Was el Ursprung los objetos betrifft, Yo largo con me gerungen. Yo bin su ausgegangen, daß OpenGL en erster Linie para Juegos eingesetzt voluntad se y como mentira el Objetos nun veces todos en el Erdboden (el Nulllinie) y ragen no a Hälfte en esta hinein.[/quote:b4209c4237] Stimmt, así tener Yo el garnicht gesehen; el macht Sinn !
Was IMHO todavía con rein debería: Un Skalierfunktion[/quote:b4209c4237] Nach längerem Hin y Her Yo mich ahora entschieden beides a ermöglichen. Mit oGL(PosMode, N%) puede ser el Modus einstellen. Im Defaultmodus 0 es el Ursprung los objetos bodenständig ausgerichtet y en el Modus 1 es el Mittelpunkt des Objektes.
Und el Función oGL(Scale, N!) para Verkleinern y Vergrößern de Objekten se lo auch geben.
Yo denke veces, en el nächsten oder übernächsten Subscriptionsversion se lo soweit ser.
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 | 23.05.2006 ▲ |
|
|
|
|
RGH | [quote:b46363596f=Uwe Pascal Niemeier]Und natürlich una Función, el el letzten ogl-Fehler como String ausgibt (oder una entsprechende Systemvariable y una Liste para Nachschlagen)[/quote:b46363596f] Aber no doch! Händisches Nachschlagen en el 21. Jahrhundert?
Lo son kein spezielles Fehlerhandling para en el OpenGL-API auftretende Fehler, pero Windows nutzt hier el Windowseigene Fehlerhandling. Den letzten aufgetretenen Fehler ermittelt el API-Función GetLastError() y encima FormatMessage(...) puede ser el passenden Fehlertext ermitteln. Diese beiden Funktionalitäten Yo nun como Systemvariablen en XProfan integriert:
%LastError : Der letzte aufgetretene Windowsfehler. 0 = Kein Fehler. Der Valor el Systemvariablen ändert se sólo, si una weiterer Fehler auftritt. Wichtiger Referencia: Ein aufgetretener Windowsfehler sagt no zwingend de, daß una XProfan-Fehler aufgetreten es. Lo son durchaus auch Windowsfehler, el XProfan bewußt ignoriert.
$LastError : Der letzte aufgetretene Windowsfehler en Textform.
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 | 23.05.2006 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | Hola Roland!
[quote:a770c6eb53]Lo son kein spezielles Fehlerhandling para en el OpenGL-API auftretende Fehler, pero Windows nutzt hier el Windowseigene Fehlerhandling. [/quote:a770c6eb53] Bist du como sicher?? KompilierenMarcaSeparación!
window 10,10-700,500
proc glError?--------------------------------
parameters a$
declare a&,b&
a&=ogl("glGetError")
b&=ogl("gluErrorString",a&)
messagebox(str$(a&)+": "+string$(b&,0),a$,0)
endproc--------------------------------------
ogl("init",%hwnd,0,0,0,1)
ogl("glClear",0)
glError? "Test 1"
ogl("glClear",-1)
glError? "Test t;
SeeYou Pascal |
|
|
| |
|
|
|
Uwe ''Pascal'' Niemeier | ¡Hola Personas!
[quote:ed5606461a]Uwe Pascal Niemeier: Wenn Yo dieses Ventana en el Hintergrund schicke (z.B. indem Yo en el dahinterstehende Editorfenster klicke), bekomme Yo una heftige Fehlermeldung.[/quote:ed5606461a] Lo scheint wohl vom OS o. de el Versión el oGL-dlls abhängig a ser...
Der Fehler tritt en me en, si el Szene después de Anwendung de Push/Pop en el Z-Achse al Nullpunkt befindet y luego adecuado voluntad se: KompilierenMarcaSeparación!
window 50,50-500,500
ogl("init",%hwnd,0,0,0,1)
while 1
sleep 50
ogl("clear")
ogl("origin",0,0,0)--------Fehler!
ogl("origin",0,0,0.0001)--Klappt!
ogl("push")
ogl("move",2,1,-5)
ogl("sphere",1,5,5)
ogl("pop")
ogl("move",0,0,0.0001)--Klappt auch!
ogl("show")
| 24.05.2006 ▲ | |
|
|
|
|
RGH | [quote:2aa2723ce6=Uwe Pascal Niemeier]Hola Roland!
[quote:2aa2723ce6]Lo son kein spezielles Fehlerhandling para en el OpenGL-API auftretende Fehler, pero Windows nutzt hier el Windowseigene Fehlerhandling. [/quote:2aa2723ce6] Bist du como sicher??[/quote:2aa2723ce6] Como Tuve offensichtlich qué übersehen. Aber getLastError() klappt auch en en oGL-Fehlern. Offensichtlich nutzt OpenGL auch el windowseigene Fehlerhandling. Aber umso mejor, entonces hay nun una weitere Systemvariable y una neue oGL-Función:
e% = %oGLError y e$ = oGL(ErrorString, e%)
(El Sache con %LastError y $LastError kann Yo entonces otra vez einmotten.)
Gracias!
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 | 24.05.2006 ▲ |
|
|
|
|
Michael Wodrich | Einmotten???
Wenn uno así simplemente en Profano una Windowsfehler serviert bekommt, Luego se lo tal vez auch häufiger benutzt.
Yo sería esta LastError-Geschichte drin dejar. Gehört sí a Allgemeinen Fehlerbehandlung en Windows.
Und lo se sí siempre jemanden geben, el no encima Profano pero direkt en Windows-API al Sistema dreht - como braucht uno el Fehlerabfrage sí.
Schöne Grüße Michael Wodrich |
|
|
| Programmieren, das spannendste Detektivspiel der Welt. | 24.05.2006 ▲ |
|
|
|
|
Frank Abbing | Sehe Yo ähnlich. Yo würds drinlassen... |
|
|
| |
|
|
| |
|
- Página 3 - |
|
|
| Zum ID-Sparen empfehle Yo get(lastmessage), get(errormessage) oder get(oglerror) oder qué De todos modos... |
|
|
| |
|
|