GLAPI/glGetVertexAttrib

From OpenGL.org
Jump to: navigation, search
glGetVertexAttrib
Core in version 4.4
Core since version 2.0

glGetVertexAttrib: Return a generic vertex attribute parameter

Function Definition

 void glGetVertexAttribdv(GLuint index​, GLenum pname​, GLdouble *params​);
 void glGetVertexAttribfv(GLuint index​, GLenum pname​, GLfloat *params​);
 void glGetVertexAttribiv(GLuint index​, GLenum pname​, GLint *params​);
 void glGetVertexAttribIiv(GLuint index​, GLenum pname​, GLint *params​);
 void glGetVertexAttribIuiv(GLuint index​, GLenum pname​, GLuint *params​);
 void glGetVertexAttribLdv(GLuint index​, GLenum pname​, GLdouble *params​);
index
Specifies the generic vertex attribute parameter to be queried.
pname
Specifies the symbolic name of the vertex attribute parameter to be queried. Accepted values are GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING​, GL_VERTEX_ATTRIB_ARRAY_ENABLED​, GL_VERTEX_ATTRIB_ARRAY_SIZE​, GL_VERTEX_ATTRIB_ARRAY_STRIDE​, GL_VERTEX_ATTRIB_ARRAY_TYPE​, GL_VERTEX_ATTRIB_ARRAY_NORMALIZED​, GL_VERTEX_ATTRIB_ARRAY_INTEGER​, GL_VERTEX_ATTRIB_ARRAY_DIVISOR​, or GL_CURRENT_VERTEX_ATTRIB​.
params
Returns the requested data.

Description

glGetVertexAttrib returns in params​ the value of a generic vertex attribute parameter. The generic vertex attribute to be queried is specified by index​, and the parameter to be queried is specified by pname​.

The accepted parameter names are as follows:

GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING​
params​ returns a single value, the name of the buffer object currently bound to the binding point corresponding to generic vertex attribute array index​. If no buffer object is bound, 0 is returned. The initial value is 0.
GL_VERTEX_ATTRIB_ARRAY_ENABLED​
params​ returns a single value that is non-zero (true) if the vertex attribute array for index​ is enabled and 0 (false) if it is disabled. The initial value is GL_FALSE​.
GL_VERTEX_ATTRIB_ARRAY_SIZE​
params​ returns a single value, the size of the vertex attribute array for index​. The size is the number of values for each element of the vertex attribute array, and it will be 1, 2, 3, or 4. The initial value is 4.
GL_VERTEX_ATTRIB_ARRAY_STRIDE​
params​ returns a single value, the array stride for (number of bytes between successive elements in) the vertex attribute array for index​. A value of 0 indicates that the array elements are stored sequentially in memory. The initial value is 0.
GL_VERTEX_ATTRIB_ARRAY_TYPE​
params​ returns a single value, a symbolic constant indicating the array type for the vertex attribute array for index​. Possible values are GL_BYTE​, GL_UNSIGNED_BYTE​, GL_SHORT​, GL_UNSIGNED_SHORT​, GL_INT​, GL_UNSIGNED_INT​, GL_FLOAT​, and GL_DOUBLE​. The initial value is GL_FLOAT​.
GL_VERTEX_ATTRIB_ARRAY_NORMALIZED​
params​ returns a single value that is non-zero (true) if fixed-point data types for the vertex attribute array indicated by index​ are normalized when they are converted to floating point, and 0 (false) otherwise. The initial value is GL_FALSE​.
GL_VERTEX_ATTRIB_ARRAY_INTEGER​
params​ returns a single value that is non-zero (true) if fixed-point data types for the vertex attribute array indicated by index​ have integer data types, and 0 (false) otherwise. The initial value is 0 (GL_FALSE​).
GL_VERTEX_ATTRIB_ARRAY_DIVISOR​
params​ returns a single value that is the frequency divisor used for instanced rendering. See glVertexAttribDivisor. The initial value is 0.
GL_CURRENT_VERTEX_ATTRIB​
params​ returns four values that represent the current value for the generic vertex attribute specified by index. Generic vertex attribute 0 is unique in that it has no current state, so an error will be generated if index​ is 0. The initial value for all other generic vertex attributes is (0,0,0,1).

glGetVertexAttribdv and glGetVertexAttribfv return the current attribute values as four single-precision floating-point values; glGetVertexAttribiv reads them as floating-point values and converts them to four integer values; glGetVertexAttribIiv and glGetVertexAttribIuiv read and return them as signed or unsigned integer values, respectively; glGetVertexAttribLdv reads and returns them as four double-precision floating-point values.

All of the parameters except GL_CURRENT_VERTEX_ATTRIB​ represent state stored in the currently bound vertex array object.

Notes

If an error is generated, no change is made to the contents of params​.

Errors

GL_INVALID_OPERATION​ is generated if pname​ is not GL_CURRENT_VERTEX_ATTRIB​ and there is no currently bound vertex array object.

GL_INVALID_VALUE​ is generated if index​ is greater than or equal to GL_MAX_VERTEX_ATTRIBS​.

GL_INVALID_ENUM​ is generated if pname​ is not an accepted value.

GL_INVALID_OPERATION​ is generated if index​ is 0 and pname​ is GL_CURRENT_VERTEX_ATTRIB​.

Associated Gets

glGet with argument GL_MAX_VERTEX_ATTRIBS​

glGetVertexAttribPointerv with arguments index​ and GL_VERTEX_ATTRIB_ARRAY_POINTER​

See Also

glBindVertexArray, glEnableVertexAttribArray, glVertexAttrib, glVertexAttribDivisor, glVertexAttribPointer, glVertexAttribFormat

Copyright

Copyright © 2003-2005 3Dlabs Inc. Ltd. Copyright © 2010 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/.