glVertexPointer
Inhaltsverzeichnis
glVertexPointer
Name
glVertexPointer - Beschreibt eine Reihe von Vertices.
Delphi-Spezifikation
procedure glVertexPointer(size : TGLint; _type : TGLenum; stride : TGLsizei; const _pointer : PGLvoid);
Parameter
size | Gibt die Anzahl der Koordinaten pro Vertex an, muss 2,3 oder 4(Vorgabe) sein. |
_type | Gibt an von welchem Datentyp die Koordinaten sind. Gültig sind GL_SHORT, GL_INT, GL_FLOAT (Vorgabe), und GL_DOUBLE. |
stride | Byteoffset zwischen den aufeinanderfolgenden Vertices. stride = 0 (Vorgabe) bedeutet das die Vertices direkt hintereinander im Speicher liegen. |
_pointer | Zeiger auf das erste Vertex der Reihe. |
Beschreibung
glVertexPointer beschreibt Lage und das Datenformat einer Reihe (Array) on Vertex-Koordinaten die später zum Rendern benutzt werden sollen. size gibt an wie viele Koordinaten dabei ein Vertex besitzt, während type die GL darüber informiert von welchem Datentyp diese sidn. stride gibt zusätzlich noch an wie groß der "Leerraum" zwischen zwei aufeinanderfolgenden Vertices ist (z.B. wenn man eine Vertexstruktur hat in der nicht nur die Koordinaten gespeichert sind). Wenn die Vertex-Reihe mit diesem Befehl beschrieben wird, werden alle übergebenen Parameter auf der Client-Seite gespeichert.
Um Vertex-Reihen zu aktivieren bzw. zu deaktivieren, ruft man glEnableClientState bzw. glDisableClientState mit dem Token GL_VERTEX_ARRAY auf. Wurden diese aktiviert, so können diese mit glDrawArrays, glDrawElements oder glArrayElement gerendert werden.
glDrawArrays nutzt man dann um eine Sequenz von Primitiven (gleichen Typs) aus den übergebenen Vertex-Daten und Vertex-Attributen zu rendern, glArrayElement um Primitiven per Indizes zu rendern und glDrawElements um per Index indiziert eine Sequenz von Primitiven zu konstruieren.
Hinweise
glVertexPointer ist ab OpenGL 1.1 verfügbar, typischerweise als Client-Status implementiert (d.h. das diese nicht per glPush-/glPopAttrib gesichert werden können, sondern nur via glPush-/glPopClientAttrib), und Vertex-Reihen sind per Vorgabe deaktiviert (also nicht per glDrawArrayElement, glDrawElements oder glDrawArrays aufrufbar).
Ein Aufruf von glVertexPointer zwischen einem glBegin und dem zugehörigen glEnd ist nicht erlaubt, allerdings muss (je nach Implementation) dann nicht unbedingt eine Fehlermeldung generiert werden.
Fehlermeldungen
GL_INVALID_VALUE wird generiert wenn size <> 2,3 oder 4 ist.
GL_INVALID_ENUM wenn _type keine gültige Konstante beinhaltet.
GL_INVALID_VALUE wenn stride negativ ist.
Zugehörige Wertrückgaben
glIsEnabled mit dem Token GL_VERTEX_ARRAY
glGet mit dem Token GL_VERTEX_ARRAY_SIZE
glGet mit dem Token GL_VERTEX_ARRAY_TYPE
glGet mit dem Token GL_VERTEX_ARRAY_STRIDE
glGetPointerv mit dem Token GL_VERTEX_ARRAY_POINTER
Siehe auch
glArrayElement, glColorPointer, glDrawArrays, glDrawElements, glEdgeFlagPointer, glEnable, glGetPointerv, glIndexPointer, glInterleavedArrays, glNormalPointer, glPopClientAttrib, glPushClientAttrib, glTexCoordPointer