glIndexPointer: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Beschreibung)
K (Hintergrundwissen: VBO ohne glInterleavedArrays hinzugefügt)
 
(7 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Unvollständig}}
 
 
= glIndexPointer =
 
= glIndexPointer =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
 
'''glIndexPointer''' - definiert ein Feld mit Farbindizes.
 
'''glIndexPointer''' - definiert ein Feld mit Farbindizes.
  
<br>
+
 
 +
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
 
  procedure '''glIndexPointer'''(''_type'': TGLenum; ''stride'': TGLsizei; const ''_pointer'': PGLvoid);  
 
  procedure '''glIndexPointer'''(''_type'': TGLenum; ''stride'': TGLsizei; const ''_pointer'': PGLvoid);  
  
<br>
+
 
 +
 
  
 
== Parameter ==
 
== Parameter ==
Zeile 26: Zeile 28:
 
|}
 
|}
  
<br>
+
 
 +
 
  
 
== Beschreibung ==  
 
== Beschreibung ==  
<b><i>glIndexPointer specifies the location and data format of an
+
'''glIndexPointer''' legt den Speicherort und das Format des Farbindex-Arrays fest, das beim Rendern benutzt werden soll.
  array of color indexes to use when rendering. type
+
 
  specifies the data type of each color index and stride gives
+
''_type'' spezifiziert das Format von jedem Farben-Index und ''stride'' liefert den Byte-Versatz zwischen Farben-Indices. Dies erlaubt es Vertex und Attributdaten innerhalb eines Arrays oder in mehreren seperaten Arrays zu speichern. (Die Speicherung in einem Array kann bei einigen Anwendungen effizienter sein; siehe [[glInterleavedArrays]].)  
  the byte stride from one color index to the next allowing
+
 
  vertexes and attributes to be packed into a single array or
+
Anmerkung zu ''stride'':<br>
  stored in separate arrays.  (Single-array storage may be
+
Wenn ''stride'' gleich 5 ist, weiß OpenGL, dass jedes 5. Byte im Array zu einem Farbindex gehört. Da die anderen glXXXPointer ebenfalls einen Offset haben, kann man verschiedene Daten in einem Feld speichern und anhand des Offsets entscheiden um was es sich gerade handelt (Farbe, Vertex, Normale etc.).
  more efficient on some implementations; see
 
  glInterleavedArrays.)
 
  
  
glIndexPointer legt den Speicherort und das Format von einem Farben-Index-Array (??) fest, der beim Rendern benutzt wird. type spezifiziert das Format von jedem Farben-Index und stride liefert den Byte-Unterschied von einem Farben-Index zu den nächsten erlaubten Vertices und Attributen, gepackt in ein Single-Array (??) or mehrere seperate Arrays. (Single-Array-Speicherung kann bei einigen Anwendungen effizienter sein; siehe [[glInterLeavedArrays]]
+
''_type, stride'' und ''_pointer'' werden client-seitig gespeichert. (siehe [[OpenGL#Client-Server|OpenGL Eigenschaften]])
  
  type, stride, and pointer are saved as client-side state.
 
  
  The color index array is initially disabled. To enable and
+
Das Farbenindex-Array ist standardmäßig ausgeschaltet. Um das Array zu aktivieren bzw. deaktivieren benutzen sie [[glEnableClientState]] bzw. [[glDisableClientState]] mit dem Argument GL_INDEX_ARRAY. Falls es aktiviert ist, wird das Farbenindex-Array verwendet, wenn [[glDrawArrays]], [[glDrawElements]] oder [[glArrayElement]] ausgeführt werden.
  disable the array, call glEnableClientState and
 
  glDisableClientState with the argument GL_INDEX_ARRAY. If
 
  enabled, the color index array is used when glDrawArrays,
 
  glDrawElements or glArrayElement is called.
 
  
  Use glDrawArrays to construct a sequence of primitives (all
 
  of the same type) from prespecified vertex and vertex
 
  attribute arrays.  Use glArrayElement to specify primitives
 
  by indexing vertexes and vertex attributes and
 
  glDrawElements to construct a sequence of primitives by
 
  indexing vertexes and vertex attributes.</i></b>
 
  
 +
'''glDrawArrays''' wird verwendet, um eine Folge von [[Primitive]]n (alle vom gleichen Typ) aus vorher festgelegten Vertices- und Vertexattribut-Arrays zu erzeugen. [[glArrayElement]] wird verwendet, um einzelne Primitiven durch Indizierung von Vertices und Vertexattributen zu spezifizieren. [[glDrawElements]] dagegen erzeugt eine Folge von Primitiven durch Indizierung von Vertices und Vertex-Attributen.
 
<br>
 
<br>
  
Zeile 69: Zeile 60:
 
Da die Parameter für das Farbindexfeld Zustände des Klientrechners sind, werden sie nicht von [[glPushAttrib]]/[[glPopAttrib]] gespeichert. Nutzen Sie dazu statt dessen [[glPushClientAttrib]]/[[glPopClientAttrib]].
 
Da die Parameter für das Farbindexfeld Zustände des Klientrechners sind, werden sie nicht von [[glPushAttrib]]/[[glPopAttrib]] gespeichert. Nutzen Sie dazu statt dessen [[glPushClientAttrib]]/[[glPopClientAttrib]].
  
<br>
+
 
 +
 
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
 
'''GL_INVALID_ENUM''' wird generiert wenn ''_type'' kein gültiger Wert übergeben wurde.<br>
 
'''GL_INVALID_ENUM''' wird generiert wenn ''_type'' kein gültiger Wert übergeben wurde.<br>
Zeile 76: Zeile 68:
  
 
==  Zugehörige Wertrückgaben ==
 
==  Zugehörige Wertrückgaben ==
[[glIsEnabled]] mit Token '''GL_INDEX_ARRAY'''
+
[[glIsEnabled]] mit Token '''GL_INDEX_ARRAY'''<br>
 
[[glGet]] mit Token [[glGet#GL_INDEX_ARRAY_TYPE|GL_INDEX_ARRAY_TYPE]]<br>
 
[[glGet]] mit Token [[glGet#GL_INDEX_ARRAY_TYPE|GL_INDEX_ARRAY_TYPE]]<br>
 
[[glGet]] mit Token [[glGet#GL_INDEX_ARRAY_STRIDE|GL_INDEX_ARRAY_STRIDE]]<br>
 
[[glGet]] mit Token [[glGet#GL_INDEX_ARRAY_STRIDE|GL_INDEX_ARRAY_STRIDE]]<br>
Zeile 82: Zeile 74:
  
  
<br>
+
 
 +
 
  
 
== Siehe auch ==
 
== Siehe auch ==
 +
 +
Hintergrundwissen: [[VBO ohne glInterleavedArrays]]
 +
 
[[glArrayElement]], [[glColorPointer]], [[glDrawArrays]], [[glDrawElements]], [[glEdgeFlagPointer]], [[glEnable]], [[glGetPointerv]], [[glInterleavedArrays]], [[glNormalPointer]], [[glPopClientAttrib]], [[glPushClientAttrib]], [[glTexCoordPointer]], [[glVertexPointer]]
 
[[glArrayElement]], [[glColorPointer]], [[glDrawArrays]], [[glDrawElements]], [[glEdgeFlagPointer]], [[glEnable]], [[glGetPointerv]], [[glInterleavedArrays]], [[glNormalPointer]], [[glPopClientAttrib]], [[glPushClientAttrib]], [[glTexCoordPointer]], [[glVertexPointer]]
  
  
 
[[Kategorie:GL|IndexPointer]]
 
[[Kategorie:GL|IndexPointer]]

Aktuelle Version vom 19. Mai 2010, 10:48 Uhr

glIndexPointer

Name

glIndexPointer - definiert ein Feld mit Farbindizes.


Delphi-Spezifikation

procedure glIndexPointer(_type: TGLenum; stride: TGLsizei; const _pointer: PGLvoid); 



Parameter

_type Bestimmt den Datentyp aller Farbindizes im Feld.

Folgende symbolische Konstanten werden akzeptiert: GL_UNSIGNED_BYTE, GL_SHORT, GL_INT, GL_FLOAT, und GL_DOUBLE

stride Bestimmt den Byte-Versatz (Offset) für aufeinanderfolgende Farbindizes. Wenn stride gleich 0 ist (Initalwert) werden die Farbindizes dicht zusammengepackt im Feld gespeichert.
_pointer Ist der Pointer auf den ersten Farbindex im Feld.



Beschreibung

glIndexPointer legt den Speicherort und das Format des Farbindex-Arrays fest, das beim Rendern benutzt werden soll.

_type spezifiziert das Format von jedem Farben-Index und stride liefert den Byte-Versatz zwischen Farben-Indices. Dies erlaubt es Vertex und Attributdaten innerhalb eines Arrays oder in mehreren seperaten Arrays zu speichern. (Die Speicherung in einem Array kann bei einigen Anwendungen effizienter sein; siehe glInterleavedArrays.)

Anmerkung zu stride:
Wenn stride gleich 5 ist, weiß OpenGL, dass jedes 5. Byte im Array zu einem Farbindex gehört. Da die anderen glXXXPointer ebenfalls einen Offset haben, kann man verschiedene Daten in einem Feld speichern und anhand des Offsets entscheiden um was es sich gerade handelt (Farbe, Vertex, Normale etc.).


_type, stride und _pointer werden client-seitig gespeichert. (siehe OpenGL Eigenschaften)


Das Farbenindex-Array ist standardmäßig ausgeschaltet. Um das Array zu aktivieren bzw. deaktivieren benutzen sie glEnableClientState bzw. glDisableClientState mit dem Argument GL_INDEX_ARRAY. Falls es aktiviert ist, wird das Farbenindex-Array verwendet, wenn glDrawArrays, glDrawElements oder glArrayElement ausgeführt werden.


glDrawArrays wird verwendet, um eine Folge von Primitiven (alle vom gleichen Typ) aus vorher festgelegten Vertices- und Vertexattribut-Arrays zu erzeugen. glArrayElement wird verwendet, um einzelne Primitiven durch Indizierung von Vertices und Vertexattributen zu spezifizieren. glDrawElements dagegen erzeugt eine Folge von Primitiven durch Indizierung von Vertices und Vertex-Attributen.

Hinweise

glIndexPointer ist erst ab OpenGL Version 1.1 verfügbar.

Das Farbindexfeld ist nach der Initialisierung der GL deaktiviert und wird nicht benutzt wenn glArrayElement, glDrawElements oder glDrawArrays aufgerufen wird.

glIndexPointer darf nicht innerhalb von glBegin-glEnd Blöcken ausgeführt werden. Wird dies doch gemacht, kann nicht garantiert werden, dass ein Fehler generiert wird. Sollte kein Fehler generiert werden ist die Operation undefiniert.

glIndexPointer ist typischerweise Klientseitig implementiert. (siehe OpenGL Eigenschaften)

Da die Parameter für das Farbindexfeld Zustände des Klientrechners sind, werden sie nicht von glPushAttrib/glPopAttrib gespeichert. Nutzen Sie dazu statt dessen glPushClientAttrib/glPopClientAttrib.


Fehlermeldungen

GL_INVALID_ENUM wird generiert wenn _type kein gültiger Wert übergeben wurde.
GL_INVALID_VALUE wird generiert wenn stride negativ ist.

Zugehörige Wertrückgaben

glIsEnabled mit Token GL_INDEX_ARRAY
glGet mit Token GL_INDEX_ARRAY_TYPE
glGet mit Token GL_INDEX_ARRAY_STRIDE
glGetPointerv mit Token GL_INDEX_ARRAY_POINTER



Siehe auch

Hintergrundwissen: VBO ohne glInterleavedArrays

glArrayElement, glColorPointer, glDrawArrays, glDrawElements, glEdgeFlagPointer, glEnable, glGetPointerv, glInterleavedArrays, glNormalPointer, glPopClientAttrib, glPushClientAttrib, glTexCoordPointer, glVertexPointer