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
Specifies whether fixed-point data values should be normalized (GL_TRUE
) or
converted directly as fixed-point values (GL_FALSE
) when they are accessed. This parameter is ignored if type
is GL_FIXED
.
relativeoffset
The distance between elements within the buffer.
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/.