glGetVertexAttrib - OpenGL ES 3.1 Reference Pages

## Name

glGetVertexAttrib — 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_CURRENT_VERTEX_ATTRIB`, `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_VERTEX_ATTRIB_BINDING`.

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

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

  `params` returns a single value that is the current vertex buffer binding of the vertex attribute. See glVertexAttribBinding.

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

| OpenGL ES API Version
--- | ---
Function Name | 2.0 | 3.0 | 3.1
`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/.