glCallLists: Unterschied zwischen den Versionen
DGLBot (Diskussion | Beiträge) K (Bot: konvertiere/korrigiere <BR>) |
K (Kategorisierung) |
||
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 9: | Zeile 9: | ||
== Delphi-Spezifikation == | == Delphi-Spezifikation == | ||
− | procedure '''glCallLists'''(''n'' : TGLsizei; ''_type'' : TGLenum; const ''lists'' : PGLvoid); | + | procedure '''glCallLists'''(''n'' : TGLsizei; ''_type'' : TGLenum; const ''lists'' : PGLvoid); |
== Parameter == | == Parameter == | ||
− | + | {|border=1 rules=all | |
− | + | !''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 Arrays 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 == | == Beschreibung == | ||
Zeile 83: | Zeile 77: | ||
== Hinweis == | == Hinweis == | ||
− | Displaylisten können zwischen einem [[glBegin]] und dem passenden [[glEnd]] aufgerufen werden, solange die DisplayList nur Befehle enthält die dort erlaubt sind. | + | Displaylisten können zwischen einem [[glBegin]] und dem passenden [[glEnd]] aufgerufen werden, solange die DisplayList nur Befehle enthält, die dort erlaubt sind. |
== Fehlermeldungen == | == Fehlermeldungen == | ||
− | '''GL_INVALID_VALUE''' wird generiert wenn ''n'' negativ ist. | + | '''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. | + | '''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 == | == Zugehörige Wertrückgaben == | ||
− | [[glGet]] mit dem Token | + | [[glGet]] mit dem Token [[glGet#GL_LIST_BASE|GL_LIST_BASE]] |
− | [[glGet]] mit dem Token | + | |
− | [[ | + | [[glGet]] mit dem Token [[glGet#GL_MAX_LIST_NESTING|GL_MAX_LIST_NESTING]] |
+ | [[glIsList]] | ||
Zeile 108: | Zeile 103: | ||
[[Kategorie:GL|CallLists]] | [[Kategorie:GL|CallLists]] | ||
+ | [[Kategorie:GL1.0|CallLists]] |
Aktuelle Version vom 18. Juni 2011, 16:20 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 Arrays 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öglichkeit 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 vorzeichenloser 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
Siehe auch
glCallList, glDeleteLists, glGenLists, glListBase, glNewList, glPushAttrib, glPushMatrix, glIsList
Hintergrundwissen : Displaylisten