glInterleavedArrays: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Delphi-Spezifikation)
K (Kategorisierung)
 
(12 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= glInterleavedArrays =
 
= glInterleavedArrays =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
'''glInterleavedArrays''' - aktivert und konfiguriert gleichzeitig eingegliederte Arrays
+
'''glInterleavedArrays''' - spezifiziert und aktiviert gleichzeitig überlappende Arrays.
 +
 
 +
 
  
<br>
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
  
Zeile 11: Zeile 13:
  
  
<br>
+
 
  
 
== Parameter ==
 
== Parameter ==
Zeile 17: Zeile 19:
 
{| border="1" rules="all"
 
{| border="1" rules="all"
 
! ''format''  
 
! ''format''  
| Gibt den Typ des Arrays an der aktiviert werden soll. Folgende Konstanten werden akzeptiert: '''GL_V2F, GL_V3F, GL_C4UB_V2F, GL_C4UB_V3F, GL_C3F_V3F, GL_N3F_V3F, GL_C4F_N3F_V3F, GL_T2F_V3F, GL_T4F_V4F, GL_T2F_C4UB_V3F, GL_T2F_C3F_V3F, GL_T2F_N3F_V3F, GL_T2F_C4F_N3F_V3F''' und '''GL_T4F_C4F_N3F_V4F'''.
+
| Gibt den Typ des Arrays an der aktiviert werden soll. Folgende Konstanten werden akzeptiert:<br> '''GL_V2F, GL_V3F, GL_C4UB_V2F, GL_C4UB_V3F, GL_C3F_V3F, GL_N3F_V3F, GL_C4F_N3F_V3F, GL_T2F_V3F, GL_T4F_V4F, GL_T2F_C4UB_V3F, GL_T2F_C3F_V3F, GL_T2F_N3F_V3F, GL_T2F_C4F_N3F_V3F''' und '''GL_T4F_C4F_N3F_V4F'''.
 
|-
 
|-
 
! ''stride''  
 
! ''stride''  
| Legt den Abstand in Bytes zwischen jeden ganzen Array Element fest.
+
| Legt den Abstand in Bytes zwischen jedem ganzen Array Element fest.
 
|}
 
|}
  
<br>
+
 
 +
 
  
 
== Beschreibung ==  
 
== Beschreibung ==  
'''glInterleavedArrays''' konfuriert und aktiviert individuelle Farben, Normalen, Textur und Vertex Arrays, wessen Elemente teil eines größeren Array Elementes sind. Bei manchen Implementationen ist diese effizienter als mehre kleine Arrays zu haben.  
+
'''glInterleavedArrays''' konfiguriert und aktiviert individuelle Farben, Normalen, Textur und Vertex-Arrays, die Teil eines größeren Arrayelementes sind. Bei manchen Implementationen ist dies effizienter als mehrere kleine Arrays zu haben.
 +
 
 +
Wenn ''stride'' 0 ist, werden die zusammengefügten Elemente im Speicher hintereinander abgelegt. Andernfalls liegen ''stride'' Bytes zwischen dem Anfang des einen kompletten Arrayelementes und dem Anfang des nachfolgenden.
 +
 
 +
''format'' funktioniert als ein Schlüssel, welcher die Extraktion der einzelnen Arrays aus dem großen gesamten Array regelt. Falls ''format'' ein '''T''' beinhaltet, enthält das Gesamtarray Texturkoordinaten, falls ein '''C''' vorhanden ist, enthält das Array Farbwerte, und falls ein '''N''' vorhanden ist sind Normalen im Array mit abgespeichert. Vertexkoordinaten sind immer im Array enthalten.
  
Wenn ''stride'' 0 ist, werden die gesammten Elemente hintereinander abgelegt. Andernfalls gibt es Schritt Bytes (stride bytes) die zwichen den Anfang des einen kompletten Array Elementes liegen und zwischen den Anfang des nächsten kompletten Array Elementes. ''(Müsste sich das nicht eigentlich aus das Ende beziehen??)''
+
Die Ziffern 2, 3 und 4 geben an, wie viele Werte extrahiert werden. '''F''' bedeutet, dass die Werte als Gleitkommazahlen extrahiert werden. Falls eine Farbe als 4 vorzeichenlose Bytes extrahiert wird, dann befindet sich das darauf folgende Arrayelement an der ersten möglichen Gleitkommaadresse.
  
''format'' funktioniert als ein Schlüssel welcher die Extraktion der einzelen Arrays aus dem großen gesammten Array regelt. Falls ''format'' ein '''T''' beinhaltet, werden Texturkoordinaten von dem  beinhalteten Array extrahiert. Falls ein '''C''' vorhanden ist, werden Farb werte extrahiert. Falls ein N vorhanden ist werden Normalenkoordinaten extrahiert. Vertexkoordinaten werden immer extrahiert.
 
  
Die Ziffern 2, 3 und 4 geben an wieviel WErte extrahiert werden. F bedeutet das die Werte als Gleitkommer Werte extrahiert werden. Falls eine Farbe als 4 vorzeichenlose Bytes extrahiert wird, dann befindet sich das darauf folgende Array Element an der ersten möglichen gleitkomma Adresse.
 
  
<br>
 
 
== Hinweise ==
 
== Hinweise ==
 
'''glInterleavedArrays''' ist erst ab der OpenGL Version 1.1 verfügbar.
 
'''glInterleavedArrays''' ist erst ab der OpenGL Version 1.1 verfügbar.
  
Wird '''glInterleavedArrays''' wärend dem Kompilervorgang einer Displayliste aufgerufen, dann wird es nicht in die Liste kompilert sondern sofort ausgeführt.
+
Wird '''glInterleavedArrays''' während des Kompilervorgangs einer Displayliste aufgerufen, dann wird es nicht in die Liste kompilert sondern sofort ausgeführt.
 +
 
 +
Die Ausführung von '''glInterleavedArrays''' zwischen [[glBegin]] und dem dazugehörigen [[glEnd]] ist nicht erlaubt. Jedoch wird eventuell kein Fehler generiert. Falls kein Fehler geniert wird, ist der Ausgang der Operation nicht definiert.
  
Die ausführung von glInterleavedArrays zwischen [[glBegin]] und dem dazugehörigen [[glEnd]] ist nicht erlaubt. Jedoch wird eventuell kein Fehler generiert. Falls kein Fehler geniert wird, ist der Ausgang der operation nicht definiert.
+
'''glInterleavedArrays''' ist normalerweise auf der Clientseite implementiert.
 +
 
 +
Vertex Array Parameter sind Zustände der Clientseite und werden daher nicht mit [[glPushAttrib]] gespeichert oder mit [[glPopAttrib]] geladen. Stattdessen kann [[glPushClientAttrib]] und [[glPopClientAttrib]] dafür verwendet werden.
 +
 
 +
Für OpenGL Version 1.3 und höher, oder wenn die Erweiterung [[ARB_multitexture]] unterstützt wird, aktualisiert '''glInterleavedArrays''' nur den Texturkoordinatenarray für die aktive Clienttextureinheit. Der Zustand der Texturkoordinaten für andere Clienttextureinheiten wird nicht aktualisiert, unabhängig davon ob die Clienttextureinheit aktiviert ist oder nicht.
  
glInterleavedArrays wird normalerweise auf Clientseite implementiert.
 
  
Vertex Array Parameter sind Zustände der Clientseite und werden daher nicht mit [[glPushAttrib]] gespeichert oder mit [[glPopAttrib]] geladen. Statt dessen kann [[glPushClientAttrib]] und [[glPopClientAttrib]] dafür verwendet werden.
 
  
<br>
 
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
'''GL_INVALID_ENUM''' wird generiert wenn '''format''' nicht akzeptiert wird<br>
+
'''GL_INVALID_ENUM''' wird generiert, wenn ''format'' nicht akzeptiert wird.
'''GL_INVALID_VALUE''' wird generiert wenn '''stride''' negativ ist<br>
+
 
 +
'''GL_INVALID_VALUE''' wird generiert, wenn ''stride'' negativ ist.
 +
 
 +
 
 +
 
  
<br>
 
 
== Siehe auch ==
 
== Siehe auch ==
 +
 +
Hintergrundwissen: [[VBO ohne glInterleavedArrays]]
 +
 
[[glArrayElement]], [[glColorPointer]], [[glDrawArrays]], [[glDrawElements]], [[glEdgeFlagPointer]], [[glEnableClientState]], [[glGetPointerv]], [[glIndexPointer]], [[glNormalPointer]], [[glTexCoordPointer]], [[glVertexPointer]]
 
[[glArrayElement]], [[glColorPointer]], [[glDrawArrays]], [[glDrawElements]], [[glEdgeFlagPointer]], [[glEnableClientState]], [[glGetPointerv]], [[glIndexPointer]], [[glNormalPointer]], [[glTexCoordPointer]], [[glVertexPointer]]
  
  
 
[[Kategorie:GL|InterleavedArrays]]
 
[[Kategorie:GL|InterleavedArrays]]
 +
[[Kategorie:GL1.0|InterleavedArrays]]

Aktuelle Version vom 20. Juli 2011, 02:58 Uhr

glInterleavedArrays

Name

glInterleavedArrays - spezifiziert und aktiviert gleichzeitig überlappende Arrays.


Delphi-Spezifikation

procedure glInterleavedArrays(format: TGLenum; stride: TGLsizei; const _pointer: PGLvoid);



Parameter

format Gibt den Typ des Arrays an der aktiviert werden soll. Folgende Konstanten werden akzeptiert:
GL_V2F, GL_V3F, GL_C4UB_V2F, GL_C4UB_V3F, GL_C3F_V3F, GL_N3F_V3F, GL_C4F_N3F_V3F, GL_T2F_V3F, GL_T4F_V4F, GL_T2F_C4UB_V3F, GL_T2F_C3F_V3F, GL_T2F_N3F_V3F, GL_T2F_C4F_N3F_V3F und GL_T4F_C4F_N3F_V4F.
stride Legt den Abstand in Bytes zwischen jedem ganzen Array Element fest.



Beschreibung

glInterleavedArrays konfiguriert und aktiviert individuelle Farben, Normalen, Textur und Vertex-Arrays, die Teil eines größeren Arrayelementes sind. Bei manchen Implementationen ist dies effizienter als mehrere kleine Arrays zu haben.

Wenn stride 0 ist, werden die zusammengefügten Elemente im Speicher hintereinander abgelegt. Andernfalls liegen stride Bytes zwischen dem Anfang des einen kompletten Arrayelementes und dem Anfang des nachfolgenden.

format funktioniert als ein Schlüssel, welcher die Extraktion der einzelnen Arrays aus dem großen gesamten Array regelt. Falls format ein T beinhaltet, enthält das Gesamtarray Texturkoordinaten, falls ein C vorhanden ist, enthält das Array Farbwerte, und falls ein N vorhanden ist sind Normalen im Array mit abgespeichert. Vertexkoordinaten sind immer im Array enthalten.

Die Ziffern 2, 3 und 4 geben an, wie viele Werte extrahiert werden. F bedeutet, dass die Werte als Gleitkommazahlen extrahiert werden. Falls eine Farbe als 4 vorzeichenlose Bytes extrahiert wird, dann befindet sich das darauf folgende Arrayelement an der ersten möglichen Gleitkommaadresse.


Hinweise

glInterleavedArrays ist erst ab der OpenGL Version 1.1 verfügbar.

Wird glInterleavedArrays während des Kompilervorgangs einer Displayliste aufgerufen, dann wird es nicht in die Liste kompilert sondern sofort ausgeführt.

Die Ausführung von glInterleavedArrays zwischen glBegin und dem dazugehörigen glEnd ist nicht erlaubt. Jedoch wird eventuell kein Fehler generiert. Falls kein Fehler geniert wird, ist der Ausgang der Operation nicht definiert.

glInterleavedArrays ist normalerweise auf der Clientseite implementiert.

Vertex Array Parameter sind Zustände der Clientseite und werden daher nicht mit glPushAttrib gespeichert oder mit glPopAttrib geladen. Stattdessen kann glPushClientAttrib und glPopClientAttrib dafür verwendet werden.

Für OpenGL Version 1.3 und höher, oder wenn die Erweiterung ARB_multitexture unterstützt wird, aktualisiert glInterleavedArrays nur den Texturkoordinatenarray für die aktive Clienttextureinheit. Der Zustand der Texturkoordinaten für andere Clienttextureinheiten wird nicht aktualisiert, unabhängig davon ob die Clienttextureinheit aktiviert ist oder nicht.


Fehlermeldungen

GL_INVALID_ENUM wird generiert, wenn format nicht akzeptiert wird.

GL_INVALID_VALUE wird generiert, wenn stride negativ ist.



Siehe auch

Hintergrundwissen: VBO ohne glInterleavedArrays

glArrayElement, glColorPointer, glDrawArrays, glDrawElements, glEdgeFlagPointer, glEnableClientState, glGetPointerv, glIndexPointer, glNormalPointer, glTexCoordPointer, glVertexPointer