glCallLists: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (GlCallLists wurde nach glCallLists verschoben)
K (Kategorisierung)
 
(4 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= glCallLists =
 
= glCallLists =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
 
'''glCallLists''' - Führt eine Liste von DisplayListen aus.
 
'''glCallLists''' - Führt eine Liste von DisplayListen aus.
  
<br>
+
 
 +
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
procedure '''glCallLists'''(''n'' : TGLsizei; ''_type'' : TGLenum; const ''lists'' : PGLvoid);
+
procedure '''glCallLists'''(''n'' : TGLsizei; ''_type'' : TGLenum; const ''lists'' : PGLvoid);
 +
 
 +
 
  
<br>
 
 
== Parameter ==
 
== Parameter ==
<table border=1 rules=all>
+
{|border=1 rules=all
<tr>
+
!''n''
<td>''n''</td>
+
|Gibt die Anzahl der auszuführenden Displaylisten an.
<td>Gibt die Anzahl der auszuführenden Displaylisten an.</td>
+
|-
</tr>
+
!''_type''
<tr>
+
|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.
<td>''_type''</td>
+
|-
<td>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.</td>
+
!''lists''
</tr>
+
|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.
<tr>
+
|}
<td>''lists''</td>
 
<td>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.</td>
 
</tr>
 
</table>
 
  
<br>
 
 
== Beschreibung ==  
 
== 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''' 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.
Zeile 76: Zeile 74:
 
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.
 
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.
  
<br>
+
 
 +
 
 
== 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.
 +
 
 +
 
  
<br>
 
 
== 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.
 
  
<br>
 
 
==  Zugehörige Wertrückgaben ==
 
==  Zugehörige Wertrückgaben ==
[[glGet]] mit dem Token '''GL_LIST_BASE''' <br>
+
[[glGet]] mit dem Token [[glGet#GL_LIST_BASE|GL_LIST_BASE]]
[[glGet]] mit dem Token '''GL_MAX_LIST_NESTING'''<br>
+
 
[[glIsList]] <br>
+
[[glGet]] mit dem Token [[glGet#GL_MAX_LIST_NESTING|GL_MAX_LIST_NESTING]]
 +
 
 +
[[glIsList]]
 +
 
  
<br>
 
  
 
== Siehe auch ==
 
== Siehe auch ==
Zeile 100: Zeile 103:
  
 
[[Kategorie:GL|CallLists]]
 
[[Kategorie:GL|CallLists]]
 +
[[Kategorie:GL1.0|CallLists]]

Aktuelle Version vom 18. Juni 2011, 16:20 Uhr

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

glIsList


Siehe auch

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

Hintergrundwissen : Displaylisten