glCallLists: Unterschied zwischen den Versionen
K (=Siehe auch=) |
|||
Zeile 103: | Zeile 103: | ||
[[glCallList]], [[glDeleteLists]], [[glGenLists]], [[glListBase]], [[glNewList]], [[glPushAttrib]], [[glPushMatrix]] | [[glCallList]], [[glDeleteLists]], [[glGenLists]], [[glListBase]], [[glNewList]], [[glPushAttrib]], [[glPushMatrix]] | ||
+ | |||
+ | Hintergrundwissen : [[Displaylisten]] |
Version vom 9. Juli 2004, 13:34 Uhr
Inhaltsverzeichnis
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
Hintergrundwissen : Displaylisten