glVertexAttribPointer
Inhaltsverzeichnis
glVertexAttribPointer
Name
glVertexAttribPointer - Definiert ein generisches Vertexattribut-Array
Delphi-Spezifikation
procedure glVertexAttribPointer(index : GLuint; size : GLint; type : GLenum;
normalized : GLboolean; stride : GLsizei; const pointer : PGLvoid)
Parameter
index | Gibt den Index des zu verändernden generischen Vertexattributs an. |
---|---|
size | Gibt die Anzahl der Werte für jedes Element des generischen Vertexattribut-Arrays an. Muss 1, 2, 3 oder 4 sein. |
type | Gibt den Datentyp der Komponenten im Array an. Die symbolischen Konstanten GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT, GL_UNSIGNED_SHORT, GL_INT, GL_UNSIGNED_INT, GL_FLOAT und GL_DOUBLE sind zugelassen. |
normalized | Gibt an, ob Festkomma-Werte normalisiert werden sollen (GL_TRUE) oder direkt als Festkomma-Werte konvertiert werden sollen (GL_FALSE), wenn auf sie zugegriffen wird. |
stride | Gibt den Byte-Offset zwischen aufeinanderfolgenden Attribut-Werten an. Wenn stride gleich 0 (der Standard-Wert) ist, werden die Attributvariablen als direkt aufeinanderfolgend im Array angenommen. |
pointer | Ein Pointer zu der ersten Komponente des ersten Attribut-Werts im Array. |
Beschreibung
glVertexAttribPointer legt fest wo sich ein generischer Array von Vertexattributen befindet und wie dieser aufgebaut ist. Die übergebenen Argumente werden Clientseitig gespeichert. Ist normalized GL_TRUE dann werden vorzeichenbehaftete Integer Werte auf den Bereich [-1,1] und vorzeichenlose auf den Bereich [0,1] übertragen.
Bevor das Array benutzt werden kann, muss es mit glEnableVertexAttribArray aktiviert werden (deaktivieren entsprechend mit glDisableVertexAttribArray). Hierbei muss der gleiche index angegeben werden.
Wenn das Array aktiviert ist, wird es bei glDrawArrays, glDrawElements, glDrawRangeElements, glArrayElement, glMultiDrawElements, oder glMultiDrawArrays Aufrufen verwendet.
Hinweise
glVertexAttribPointer ist erst ab OpenGL Version 2.0 oder später verfügbar.
glVertexAttribPointer darf nicht zwischen glBegin und glEnd ausgeführt werden. Wird dies denoch gemacht, kann es sein das ein Fehler generiert wird. Es kann aber auch sein das kein Fehler generiert wird und der Zustand der Operation undefiniert ist.
glVertexAttribPointer ist üblicherweise auf der Client Seite implementiert.
Die Parameter des generischen Vertexattribut-Arrays werden auf der Client Seite gespeichert, und können daher nicht mit glPushAttrib und glPopAttrib gespeichert und wiederhergestellt werden. Statt dessen verwendet man glPushClientAttrib und glPopClientAttrib.
Fehlermeldungen
GL_INVALID_VALUE wird generiert, wenn index größer oder gleich GL_MAX_VERTEX_ATTRIBS ist.
GL_INVALID_VALUE wird generiert, wenn size nicht 1, 2, 3, oder 4 ist.
GL_INVALID_VALUE wird generiert, wenn stride negativ ist.
GL_INVALID_ENUM wird generiert, wenn type kein akzeptierter Wert ist.
Zugehörige Wertrückgaben
- glGet mit Token GL_MAX_VERTEX_ATTRIBS
- glGetVertexAttrib mit dem Argument index und dem Namen des Vertex Attribut Parameters.
- glGetVertexAttribPointer mit dem Argutmenten index und GL_VERTEX_ATTRIB_ARRAY_POINTER
Siehe auch
glArrayElement, glBindAttribLocation, glDisableVertexAttribArray, glDrawArrays, glDrawElements, glDrawRangeElements, glEnableVertexAttribArray, glMultiDrawArrays, glMultiDrawElements, glPopClientAttrib, glPushClientAttrib, glVertexAttrib