glNewList: Unterschied zwischen den Versionen
K (=Parameter=) |
K (=GL_COMPILE_AND_EXECUTE=) |
||
Zeile 40: | Zeile 40: | ||
Die Befehle werden gleichzeitig zur Kompilierung auch ausgeführt. | Die Befehle werden gleichzeitig zur Kompilierung auch ausgeführt. | ||
− | Bestimmte Befehle werden übrigens nicht in die Displayliste kompiliert, sondern dort direkt ausgeführt, unabhängig vom Modus der Displayliste, darunter [[glColorPointer]], [[glDeleteLists]], [[glDisableClientState]], [[glEdgeFlagPointer]], [[glEnableClientState]], [[glFeedbackBuffer]], [[glFinish]], [[glFlush]], [[glGenLists]], [[glIndexPointer]], [[glInterleavedArrays]], [[glIsEnabled]], [[glIsList]], [[glNormalPointer]], [[glPopClientAttrib]], [[glPixelStore]], [[glPushClientAttrib]], [glReadPixels], [[glRenderMode]], [[glSelectBuffer]], [[glTexCoordPointer]], [[glVertexPointer]], und alle [[glGet]]-Befehle. | + | Bestimmte Befehle werden übrigens nicht in die Displayliste kompiliert, sondern dort direkt ausgeführt, unabhängig vom Modus der Displayliste, darunter [[glColorPointer]], [[glDeleteLists]], [[glDisableClientState]], [[glEdgeFlagPointer]], [[glEnableClientState]], [[glFeedbackBuffer]], [[glFinish]], [[glFlush]], [[glGenLists]], [[glIndexPointer]], [[glInterleavedArrays]], [[glIsEnabled]], [[glIsList]], [[glNormalPointer]], [[glPopClientAttrib]], [[glPixelStore]], [[glPushClientAttrib]], [[glReadPixels]], [[glRenderMode]], [[glSelectBuffer]], [[glTexCoordPointer]], [[glVertexPointer]], und alle [[glGet]]-Befehle. |
Die Befehle [[glTexImage1D]], [[glTexImage2D]] und [[glTexImage3D]] werden auch direkt ausgeführt statt in die Liste hineinkompiliert zu werden, sobald ihr erstes Argument '''GL_PROXY_TEXTURE_1D''', '''GL_PROXY_TEXTURE_2D''' oder '''GL_PROXY_TEXTURE_3D''' ist. | Die Befehle [[glTexImage1D]], [[glTexImage2D]] und [[glTexImage3D]] werden auch direkt ausgeführt statt in die Liste hineinkompiliert zu werden, sobald ihr erstes Argument '''GL_PROXY_TEXTURE_1D''', '''GL_PROXY_TEXTURE_2D''' oder '''GL_PROXY_TEXTURE_3D''' ist. | ||
Zeile 46: | Zeile 46: | ||
<br> | <br> | ||
+ | |||
== Hinweise == | == Hinweise == | ||
[[glCallList]] und [[glCallLists]] können innerhalb einer Displayliste aufgerufen werden, aber Befehle innerhalb dieser aufgerufenen Displaylisten werden NICHT in die aufrufende Displayliste hineinkompiliert, unabhängig vom Modus. | [[glCallList]] und [[glCallLists]] können innerhalb einer Displayliste aufgerufen werden, aber Befehle innerhalb dieser aufgerufenen Displaylisten werden NICHT in die aufrufende Displayliste hineinkompiliert, unabhängig vom Modus. |
Version vom 10. Juli 2004, 15:03 Uhr
Inhaltsverzeichnis
glNewList, glEndList
Name
glNewList, glEndList - Erstellt oder ersetzt eine Displayliste
Delphi-Spezifikation
procedure glNewList(list : TGLuint; mode : TGLenum);
procedure glEndList;
Parameter
list | Name der Displayliste. |
mode | Gibt den Kompilierungsmodus an; gültig ist hier GL_COMPILE und GL_COMPILE_AND_EXECUTE. |
Beschreibung
Displaylisten sind eine Gruppe von OpenGL-Befehlen die für eine nachfolgende Ausführung gespeichert werden und werden mit dem Befehl glNewList erstellt. Alle nachfolgenden Befehle werden in der Displayliste abgelegt bis glEndList aufgerufen wird.
glNewList erhält dabei als erstes Argument einen positiven Integerwert der den eindeutigen Namen der Displayliste darstellt (Namen können mit glGenLists erstellt und mit glIsList geprüft werden. Das zweite Argument, mode, ist eine symbolische Konstante die die folgenden Wert annehmen kann :
GL_COMPILE
Die Befehlewerden nur kompiliert.
GL_COMPILE_AND_EXECUTE
Die Befehle werden gleichzeitig zur Kompilierung auch ausgeführt.
Bestimmte Befehle werden übrigens nicht in die Displayliste kompiliert, sondern dort direkt ausgeführt, unabhängig vom Modus der Displayliste, darunter glColorPointer, glDeleteLists, glDisableClientState, glEdgeFlagPointer, glEnableClientState, glFeedbackBuffer, glFinish, glFlush, glGenLists, glIndexPointer, glInterleavedArrays, glIsEnabled, glIsList, glNormalPointer, glPopClientAttrib, glPixelStore, glPushClientAttrib, glReadPixels, glRenderMode, glSelectBuffer, glTexCoordPointer, glVertexPointer, und alle glGet-Befehle. Die Befehle glTexImage1D, glTexImage2D und glTexImage3D werden auch direkt ausgeführt statt in die Liste hineinkompiliert zu werden, sobald ihr erstes Argument GL_PROXY_TEXTURE_1D, GL_PROXY_TEXTURE_2D oder GL_PROXY_TEXTURE_3D ist.
Sobald glEndList aufgerufen wird, wird die Erstellung der Displayliste beendet und diese mit dem eindeutigen Namen verbunden. Wenn eine Displayliste mit dem gleichen Namen bereits existiert, wird diese überschrieben.
Hinweise
glCallList und glCallLists können innerhalb einer Displayliste aufgerufen werden, aber Befehle innerhalb dieser aufgerufenen Displaylisten werden NICHT in die aufrufende Displayliste hineinkompiliert, unabhängig vom Modus.
Eine Displayliste ist eine Gruppe von Befehlen und Argumente, also werden Fehler innerhalb einer Displayliste ausgelöst sobald diese aufgerufen wird, nicht jedoch wenn diese nur kompiliert wird.
Fehlermeldungen
GL_INVALID_VALUE wird generiert wenn list gleich 0 ist.
GL_INVALID_ENUM wird generiert wenn mode kein gültiges Token ist.
GL_INVALID_OPERATION wird generiert wenn glEndList ohne vorhergehendes glNewList aufgerufen wird, oder glNewList aufgerufen wird wenn bereits eine Displayliste definiert wird. GL_INVALID_OPERATION wird generiert wenn glNewList oder glEndList zwischen einem glBegin und dem zugehörigen glEnd aufgerufen werden.
GL_OUT_OF_MEMORY wird generiert wenn nicht genügend Speicher zur Verfügung steht um die Displayliste zu generieren. Wenn die GL-Version 1.1 (oder höher ist), dann werden keine Änderungen an einer (evtl.) bereits vorher definierten Displayliste getätigt.
Zugehörige Wertrückgaben
glIsList
glGet mit dem Token GL_LIST_INDEX
glGet mit dem Token GL_LIST_MODE
Siehe auch
glCallList, glCallLists, glDeleteLists, glGenLists
Hintergrundwissen : Displaylisten