## Name

glEnableVertexAttribArray — Enable or disable a generic vertex attribute array

## C Specification

`void glEnableVertexAttribArray(` | GLuint index`)`;

`void glDisableVertexAttribArray(` | GLuint index`)`;

`void glEnableVertexArrayAttrib(` | GLuint vaobj,
| GLuint index`)`;

`void glDisableVertexArrayAttrib(` | GLuint vaobj,
| GLuint index`)`;

## Parameters

`vaobj`

  Specifies the name of the vertex array object for `glDisableVertexArrayAttrib` and `glEnableVertexArrayAttrib` functions.

`index`

  Specifies the index of the generic vertex attribute to be enabled or disabled.

## Description

`glEnableVertexAttribArray` and `glEnableVertexArrayAttrib` enable the generic vertex attribute array specified by `index`. `glEnableVertexAttribArray` uses currently bound vertex array object for the operation, whereas `glEnableVertexArrayAttrib` updates state of the vertex array object with ID `vaobj`.

`glDisableVertexAttribArray` and `glDisableVertexArrayAttrib` disable the generic vertex attribute array specified by `index`. `glDisableVertexAttribArray` uses currently bound vertex array object for the operation, whereas `glDisableVertexArrayAttrib` updates state of the vertex array object with ID `vaobj`.

By default, all client-side capabilities are disabled, including all generic vertex attribute arrays. If enabled, the values in the generic vertex attribute array will be accessed and used for rendering when calls are made to vertex array commands such as glDrawArrays, glDrawElements, glDrawRangeElements, glMultiDrawElements, or glMultiDrawArrays.

## Errors

`GL_INVALID_OPERATION` is generated by `glEnableVertexAttribArray` and `glDisableVertexAttribArray` if no vertex array object is bound.

`GL_INVALID_OPERATION` is generated by `glEnableVertexArrayAttrib` and `glDisableVertexArrayAttrib` if `vaobj` is not the name of an existing vertex array object.

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

## Associated Gets

glGet with argument `GL_MAX_VERTEX_ATTRIBS`

glGetVertexAttrib with arguments `index` and `GL_VERTEX_ATTRIB_ARRAY_ENABLED` ``

glGetVertexAttribPointerv with arguments `index` and `GL_VERTEX_ATTRIB_ARRAY_POINTER`

## Version Support

| 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
`glDisableVertexArrayAttrib` | - | - | - | - | - | - | - | - | - | - | - | ✔
`glDisableVertexAttribArray` | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔
`glEnableVertexArrayAttrib` | - | - | - | - | - | - | - | - | - | - | - | ✔
`glEnableVertexAttribArray` | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔

## See Also

glBindAttribLocation, glDrawArrays, glDrawElements, glDrawRangeElements, glMultiDrawElements, glVertexAttrib, 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/.