glNewList

Aus DGL Wiki
Wechseln zu: Navigation, Suche

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 Werte annehmen kann:

GL_COMPILE

Die Befehle werden 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