glVertexAttribFormat — 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) ; |
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
The distance between elements within the buffer.
relativeoffset
The distance between elements within the buffer.
glVertexAttribFormat
, glVertexAttribIFormat
and
glVertexAttribLFormat
specify the organization of data in vertex arrays.
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 specifed 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
is used to specify layout for
data associated with a generic attribute variable declared as 64-bit double precision
components. For glVertexAttribLFormat
, type
must be GL_DOUBLE
. In contrast to glVertexAttribFormat
,
which will cause data declared as GL_DOUBLE
to be converted to 32-bit
representation, glVertexAttribLFormat
causes such data to be left
in its natural, 64-bit representation.
For glVertexAttribFormat
, 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 noramlized
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
should be used to describe vertex attribute
layout for floating-point vertex attributes, glVertexAttribIFormat
should be used to describe vertex attribute layout for integer vertex attribute
and glVertexAttribLFormat
should be used to describe the layout
for 64-bit vertex attributes. Data for an array specified by
glVertexAttribIFormat
will always be left as integer values;
such data are referred to as pure integers.
GL_INVAILD_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_OPERATION
is generated if no vertex array object is bound.
glGet with arguments GL_MAX_VERTEX_ATTRIB_BINDINGS
,
or GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET
.
glGetVertexAttrib with argument GL_VERTEX_ATTRIB_RELATIVE_OFFSET
.
glBindVertexBuffer, glVertexAttribBinding, glVertexAttribPointer, glVertexBindingDivisor, glVertexAttribPointer.
Copyright © 2012 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. http://opencontent.org/openpub/.