glCallLists

Aus DGL Wiki
Version vom 9. Juli 2004, 12:38 Uhr von Sascha Willems (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

glCallLists


Name

glCallLists - Führt eine Liste von DisplayListen aus.


Delphi-Spezifikation

procedure glCallLists(n : TGLsizei; _type : TGLenum; const lists : PGLvoid);


Parameter

n Gibt die Anzahl der auszuführenden Displaylisten an.
_type Gibt den Typ der Werte die sich in der Liste befinden an. Folgende symbolische Konstanten sind gültig : GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT, GL_UNSIGNED_SHORT, GL_INT, GL_UNSIGNED_INT, GL_FLOAT, GL_2_BYTES, GL_3_BYTES und GL_4_BYTES.
lists Gibt die Adresse eines an, das die Namensversätze angibt. Der Zeigertyp ist void, da der Typ je nach dem was in _type übergeben wurde unterschiedlich sein kann.


Beschreibung

glCallLists führt jede in der Namensliste angegebene Displayliste aus. Im Endeffekt macht der Befehl also nichts weiter als alle angegebenen Displaylisten nacheinander auszuführen, so als ob man selbst alle Displaylisten nacheinander aufrufen würde. Displaylisten die nicht definiert sind werden ignoriert.

glCallLists ist eine effiziente Mögluchkeit mehr als nur eine Displayliste auszuführen. _type gibt dabei an von welchem Typ die Namen der Displaylisten sind :

GL_BYTE

lists wird als eine Reihe von vorzeichenbehafteten Bytewerten behandelt, die in der Reichweite -128 bis 127 liegen.
Delphi-Äquivalent : ShortInt

GL_UNSIGNED_BYTE

lists wird als eine Reihe vorzeichenliser Bytewerte behandelt, die in der Reichweite 0 bis 255 liegen.
Delphi-Äquivalent : Byte

GL_SHORT

lists wird als eine Reihe von vorzeichenbehafteten Zwei-Byte Integerwerten betrachtet, die in der Reichweite von -32768 bis 32767 liegen.
Delphi-Äquivalent : SmallInt

GL_UNSIGNED_SHORT

lists wird als eine Reihe von vorzeichenlosen Zwei-Byte Integerwerten behandelt, die in der Reichweite 0 bis 655535 liegen.
Delphi-Äquivalent : Word

GL_INT

lists wird als eine Reihe von vorzeichenbehafteten Vier-Byte Integerwerten betrachtet.
Delphi-Äquivalent : Integer/LongInt

GL_UNSIGNED_INT

lists wird als eine Reihe von vorzeichenlosen Vier-Byte Integerwerten betrachtet.
Delphi-Äquivalent : LongWord/Cardinal

GL_FLOAT

lists wird als eine Reihe von Vier-Byte Fließkommawerten betrachtet.
Delphi-Äquivalent : Single'

GL_2_BYTES

lists wird als eine Reihe von vorzeichenlosen Bytewerten betrachtet. Jedes Bytepaar gibt einen einzelnen DisplayListen-Namen an, wobei dieser sich wie folgt zusammensetzt : 256*Bytewert1 + Bytewert2.

GL_3_BYTES

lists wird als eine Reihe von vorzeichenlosen Bytewerten betrachtet. Jedes Bytetrio gibt einen einzelnen DisplayListen-Namen an, wobei dieser sich wie folgt zusammensetzt : 65536*Bytewert1 + 256*Bytewert2 + ByteWert3.

GL_4_BYTES

lists wird als eine Reihe von vorzeichenlosen Bytewerten betrachtet. Jedes Bytequartett gibt einen einzelnen DisplayListen-Namen an, wobei dieser sich wie folgt zusammensetzt : 16777216*ByteWert1 + 65536*Bytewert2 + 256*Bytewert3 + ByteWert4.


Die Länge der Liste mit Namen ist nicht wie gewohnt NULL-terminiert, sondern wird durch n angegeben.

Eine weiterführende Möglichkeit zur Umleitung bietet die Funktion glListBase, welche über einen vorzeichenlosen Versatz einen Wert angibt der zu jedem Displaylisten-Namen hinzugefügt wird bevor diese ausgeführt wird. Ein Aufruf von glCallList innerhalb einer DisplayListe ist erlaubt (->"nested Displaylists"), aber um die Möglichkeit einer unendlichen Rekursion zu unterbinden ist der Verschachtelungslevel auf mindestens 64 beschränkt, kann aber je nach Implementation auch höher liegen.

OpenGL-Statuten werden nicht gesichert bzw. wiederhergestellt während eines Aufrufes an glCallLists, also verbleiben alle innerhalb einer aufgerufenen Displayliste getätigen Statechanges. Um dies zu vermeiden sollte man glPushAttrib, glPopAttrib, glPushMatrix und glPopMatrix nutzen.


Hinweis

Displaylisten können zwischen einem glBegin und dem passenden glEnd aufgerufen werden, solange die DisplayList nur Befehle enthält die dort erlaubt sind.


Fehlermeldungen

GL_INVALID_VALUE wird generiert wenn n negativ ist.

GL_INVALID_ENUM wird generiert wenn type ungleich GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT, GL_UNSIGNED_SHORT, GL_INT, GL_UNSIGNED_INT, GL_FLOAT, GL_2_BYTES, GL_3_BYTES oder GL_4_BYTES ist.


Zugehörige Wertrückgaben

glGet mit dem Token GL_LIST_BASE glGet mit dem Token GL_MAX_LIST_NESTING glIsList


Siehe auch

glCallList, glDeleteLists, glGenLists, glListBase, glNewList, glPushAttrib, glPushMatrix