2011 Khronos Group.
glGetActiveAtomicCounterBufferiv 3G
glGetActiveAtomicCounterBufferiv retrieve information about the set of active atomic counter buffers for a program

## C Specification

void `glGetActiveAtomicCounterBufferiv` Gluint program GLuint bufferIndex GLenum pname GLint *params

## Parameters

program

  The name of a program object from which to retrieve information.

bufferIndex

  Specifies index of an active atomic counter buffer.

pname

  Specifies which parameter of the atomic counter buffer to retrieve.

params

  Specifies the address of a variable into which to write the retrieved information.

## Description

`glGetActiveAtomicCounterBufferiv` retrieves information about the set of active atomic counter buffers for a program object. program is the name of a program object for which the command glLinkProgram has been issued in the past. It is not necessary for program to have been linked successfully. The link may have failed because the number of active atomic counters exceeded the limits.

bufferIndex specifies the index of an active atomic counter buffer and must be in the range zero to the value of `GL_ACTIVE_ATOMIC_COUNTER_BUFFERS` minus one. The value of `GL_ACTIVE_ATOMIC_COUNTER_BUFFERS` for program indicates the number of active atomic counter buffer and can be queried with glGetProgram.

If no error occurs, the parameter(s) specified by pname are returned in params. If an error is generated, the contents of params are not modified.

If pname is `GL_ATOMIC_COUNTER_BUFFER_BINDING`, then the index of the counter buffer binding point associated with the active atomic counter buffer bufferIndex for program is returned.

If pname is `GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE`, then the implementation-dependent minimum total buffer object size, in baseic machine units, required to hold all active atomic counters in the atomic counter binding point identified by bufferIndex is returned.

If pname is `GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS`, then the number of active atomic counters for the atomic counter buffer identified by bufferIndex is returned.

If pname is `GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES`, then a list of the active atomic counter indices for the atomic counter buffer identified by bufferIndex is returned. The number of elements that will be written into params is the value of `GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS` for bufferIndex.

If pname is `GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER`, `GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER`, `GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER`, `GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER`, `GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER`, `GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER` then a boolean value indicating whether the atomic counter buffer identified by bufferIndex is referenced by the vertex, tessellation control, tessellation evaluation, geometry, fragment or compute processing stages of program, respectively, is returned.

## Notes

`glGetActiveAtomicCounterBufferiv` is available only if the GL version is 4.2 or higher.

`GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_COMPUTE_SHADER` is available only of the GL version is 4.3 or higher.

## Errors

`GL_INVALID_VALUE` is generated if program is not the name of a program object for which glLinkProgram has been called in the past.

`GL_INVALID_VALUE` is generated if bufferIndex is greater than or equal to the value of `GL_ACTIVE_ATOMIC_COUNTER_BUFFERS` for program.

`GL_INVALID_ENUM` is generated if pname is not one of the accepted tokens.

## See Also

glGetProgram, glGetActiveSubroutineUniform, glGetActiveSubroutineUniformName, glGetUniformLocation

## Copyright

Copyright 2011 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/.