glVertexAttribFormat, glVertexArrayAttribFormat — specify the organization of vertex arrays
void glVertexAttribFormat( | GLuint attribindex, |
GLint size, | |
GLenum type, | |
GLboolean normalized, | |
GLuint relativeoffset) ; |
void glVertexAttribIFormat( | GLuint attribindex, |
GLint size, | |
GLenum type, | |
GLuint relativeoffset) ; |
void glVertexAttribLFormat( | GLuint attribindex, |
GLint size, | |
GLenum type, | |
GLuint relativeoffset) ; |
void glVertexArrayAttribFormat( | GLuint vaobj, |
GLuint attribindex, | |
GLint size, | |
GLenum type, | |
GLboolean normalized, | |
GLuint relativeoffset) ; |
void glVertexArrayAttribIFormat( | GLuint vaobj, |
GLuint attribindex, | |
GLint size, | |
GLenum type, | |
GLuint relativeoffset) ; |
void glVertexArrayAttribLFormat( | GLuint vaobj, |
GLuint attribindex, | |
GLint size, | |
GLenum type, | |
GLuint relativeoffset) ; |
vaobj
Specifies the name of the vertex array object for glVertexArrayAttrib{I, L}Format
functions.
attribindex
The generic vertex attribute array being described.
size
The number of values per vertex that are stored in the array.
type
The type of the data stored in the array.
normalized
GL_TRUE
if the parameter represents a normalized integer (type
must be an integer type). GL_FALSE
otherwise.
relativeoffset
The offset, measured in basic machine units of the first element relative to the start of the vertex buffer binding this attribute fetches from.
glVertexAttribFormat
, glVertexAttribIFormat
and glVertexAttribLFormat
, as well as glVertexArrayAttribFormat
, glVertexArrayAttribIFormat
and glVertexArrayAttribLFormat
specify the organization of data in vertex arrays. The first three calls operate on the bound vertex array object, whereas the last three ones modify the state of a vertex array object with ID vaobj
. attribindex
specifies the index of the generic vertex attribute array whose data layout is being described, and must be less than the value of GL_MAX_VERTEX_ATTRIBS
.
size
determines the number of components per vertex are allocated to the specified attribute and must be 1, 2, 3 or 4. type
indicates the type of the data. If type
is one of GL_BYTE
, GL_SHORT
, GL_INT
, GL_FIXED
, GL_FLOAT
, GL_HALF_FLOAT
, and GL_DOUBLE
indicate types GLbyte
, GLshort
, GLint
, GLfixed
, GLfloat
, GLhalf
, and GLdouble
, respectively; the values GL_UNSIGNED_BYTE
, GL_UNSIGNED_SHORT
, and GL_UNSIGNED_INT
indicate types GLubyte
, GLushort
, and GLuint
, respectively; the values GL_INT_2_10_10_10_REV
and GL_UNSIGNED_INT_2_10_10_10_REV
indicating respectively four signed or unsigned elements packed into a single GLuint
; and the value GL_UNSIGNED_INT_10F_11F_11F_REV
indicating three floating point values packed into a single GLuint
.
glVertexAttribLFormat
and glVertexArrayAttribLFormat
is used to specify layout for data associated with a generic attribute variable declared as 64-bit double precision components. For glVertexAttribLFormat
and glVertexArrayAttribLFormat
, type
must be GL_DOUBLE
. In contrast to glVertexAttribFormat
or glVertexArrayAttribFormat
, which will cause data declared as GL_DOUBLE
to be converted to 32-bit representation, glVertexAttribLFormat
and glVertexArrayAttribLFormat
cause such data to be left in its natural, 64-bit representation.
For glVertexAttribFormat
and glVertexArrayAttribFormat
, if normalized
is GL_TRUE
, then integer data is normalized to the range [-1, 1] or [0, 1] if it is signed or unsigned, respectively. If normalized
is GL_FALSE
then integer data is directly converted to floating point.
relativeoffset
is the offset, measured in basic machine units of the first element relative to the start of the vertex buffer binding this attribute fetches from.
glVertexAttribFormat
and glVertexArrayAttribFormat
should be used to describe vertex attribute layout for floating-point vertex attributes, glVertexAttribIFormat
and glVertexArrayAttribIFormat
should be used to describe vertex attribute layout for integer vertex attribute, and glVertexAttribLFormat
and glVertexArrayAttribLFormat
should be used to describe the layout for 64-bit vertex attributes. Data for an array specified by glVertexAttribIFormat
and glVertexArrayAttribIFormat
will always be left as integer values; such data are referred to as pure integers.
GL_UNSIGNED_INT_10F_11F_11F_REV
is accepted for type
only if the GL version is 4.4 or higher.
GL_INVALID_VALUE
is generated if attribindex
is greater than or equal to the value of GL_MAX_VERTEX_ATTRIBS
.
GL_INVALID_VALUE
is generated if size
is not one of the accepted values.
GL_INVALID_VALUE
is generated if relativeoffset
is greater than the value of GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET
.
GL_INVALID_ENUM
is generated if type
is not one of the accepted tokens.
GL_INVALID_ENUM
is generated by glVertexAttribIFormat
, glVertexAttribLFormat
, glVertexArrayAttribIFormat
and glVertexArrayAttribLFormat
if type
is GL_UNSIGNED_INT_10F_11F_11F_REV
.
GL_INVALID_OPERATION
is generated by glVertexAttribFormat
, glVertexAttribIFormat
and glVertexAttribLFormat
if no vertex array object is bound.
GL_INVALID_OPERATION
is generated by glVertexArrayAttribFormat
, glVertexArrayAttribIFormat
and glVertexArrayAttribLFormat
if vaobj
is not the name of an existing vertex array object.
GL_INVALID_OPERATION
is generated under any of the following conditions:
size
is GL_BGRA
and type
is not GL_UNSIGNED_BYTE
, GL_INT_2_10_10_10_REV
or GL_UNSIGNED_INT_2_10_10_10_REV
.
type
is GL_INT_2_10_10_10_REV
or GL_UNSIGNED_INT_2_10_10_10_REV
, and size
is neither 4 nor GL_BGRA
.
type
is GL_UNSIGNED_INT_10F_11F_11F_REV
and size
is not 3.
size
is GL_BGRA
and normalized
is GL_FALSE
.
glGet with arguments GL_MAX_VERTEX_ATTRIB_BINDINGS
, or GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET
.
glGetVertexAttrib with argument GL_VERTEX_ATTRIB_RELATIVE_OFFSET
.
OpenGL Version | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Function / Feature Name | 2.0 | 2.1 | 3.0 | 3.1 | 3.2 | 3.3 | 4.0 | 4.1 | 4.2 | 4.3 | 4.4 | 4.5 |
glVertexArrayAttribFormat | - | - | - | - | - | - | - | - | - | - | - | ✔ |
glVertexArrayAttribIFormat | - | - | - | - | - | - | - | - | - | - | - | ✔ |
glVertexArrayAttribLFormat | - | - | - | - | - | - | - | - | - | - | - | ✔ |
glVertexAttribFormat | - | - | - | - | - | - | - | - | - | ✔ | ✔ | ✔ |
glVertexAttribIFormat | - | - | - | - | - | - | - | - | - | ✔ | ✔ | ✔ |
glVertexAttribLFormat | - | - | - | - | - | - | - | - | - | ✔ | ✔ | ✔ |
glBindVertexBuffer, glVertexAttribBinding, glVertexAttribPointer, glVertexBindingDivisor, glVertexAttribPointer.
Copyright © 2013-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. https://opencontent.org/openpub/.