2003-2005
3Dlabs Inc. Ltd.
2010-2014
Khronos Group
glGetVertexAttrib
3G
glGetVertexAttrib

# glGetVertexAttribfv

# glGetVertexAttribiv

# glGetVertexAttribIiv

# glGetVertexAttribIuiv

Return a generic vertex attribute parameter

## C Specification

            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

## Parameters

`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_INT_2_10_10_10_REV`, `GL_UNSIGNED_INT`, `GL_FIXED`, `GL_HALF_FLOAT`, and `GL_FLOAT`. 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. The initial value for all generic vertex attributes is (0,0,0,1).

All of the parameters except `GL_CURRENT_VERTEX_ATTRIB` represent state stored in the currently bound vertex array object. If the zero object is bound, these values are client state.

## Notes

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

## Errors

`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.

## Associated Gets

glGet with argument `GL_MAX_VERTEX_ATTRIBS`

glGetVertexAttribPointerv with arguments `index` and `GL_VERTEX_ATTRIB_ARRAY_POINTER`

## API Version Support

`glGetVertexAttribfv`
`glGetVertexAttribiv`
`glGetVertexAttribIiv`
`glGetVertexAttribIuiv`

## See Also

glBindAttribLocation, glBindBuffer, glDisableVertexAttribArray, glEnableVertexAttribArray, glVertexAttrib, glVertexAttribDivisor, glVertexAttribPointer

## Copyright

Copyright 2003-2005 3Dlabs Inc. Ltd. Copyright 2010-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. http://opencontent.org/openpub/.