OpenGL.GL.ARB.shader_atomic_counters

OpenGL extension ARB.shader_atomic_counters
This module customises the behaviour of the OpenGL.raw.GL.ARB.shader_atomic_counters to provide a more Python-friendly API
Overview (from the spec)
This extension provides a set of atomic counters.
This extension provides GLSL built-in functions to query and increment/decrement these atomic counters.
This enables a shader to write to unique offsets (append to a buffer object) or read from unique offsets (consume from a buffer object).
Opaque handles to atomic counters are declared at global scope and are qualified with the uniform qualifier.
Unlike other user-defined uniforms declared at global scope, they take NO storage from the default partition, they have NO location, and they may NOT be set with the Uniform* commands. Atomic counters may also NOT be grouped into uniform blocks.
Active atomic counters can be discovered by the commands GetUniformIndices, GetActiveUniformName, GetActiveUniform and GetActiveUniformsiv.
Like samplers, the opaque handles of the atomic counters and are ONLY used in some GLSL built-in functions.
The atomic counters pointed to by the opaque handles are bound to buffer binding points and buffer offsets through the layout qualifiers in the shading language, or they are implicitly assigned by the compiler.
Through the OpenGL API, buffer objects may be bound to these binding points with BindBufferBase or BindBufferRange.
The contents of the atomic counters are stored in the buffer objects. The contents of atomic counters may be set and queried with buffer object manipulation functions (e.g. BufferData, BufferSubData, MapBuffer or MapBufferRange).
The official definition of this extension is available here: http://www.opengl.org/registry/specs/ARB/shader_atomic_counters.txt

Functions

glGetActiveAtomicCounterBufferiv( program , bufferIndex , pname , params )

Constants

GL_ACTIVE_ATOMIC_COUNTER_BUFFERS (37593)
GL_ATOMIC_COUNTER_BUFFER (37568)
GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTER_INDICES (37574)
GL_ATOMIC_COUNTER_BUFFER_ACTIVE_ATOMIC_COUNTERS (37573)
GL_ATOMIC_COUNTER_BUFFER_BINDING (37569)
GL_ATOMIC_COUNTER_BUFFER_DATA_SIZE (37572)
GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_FRAGMENT_SHADER (37579)
GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_GEOMETRY_SHADER (37578)
GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_CONTROL_SHADER (37576)
GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_TESS_EVALUATION_SHADER (37577)
GL_ATOMIC_COUNTER_BUFFER_REFERENCED_BY_VERTEX_SHADER (37575)
GL_ATOMIC_COUNTER_BUFFER_SIZE (37571)
GL_ATOMIC_COUNTER_BUFFER_START (37570)
GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS (37596)
GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE (37592)
GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS (37585)
GL_MAX_COMBINED_ATOMIC_COUNTERS (37591)
GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS (37584)
GL_MAX_FRAGMENT_ATOMIC_COUNTERS (37590)
GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS (37583)
GL_MAX_GEOMETRY_ATOMIC_COUNTERS (37589)
GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS (37581)
GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS (37587)
GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS (37582)
GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS (37588)
GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS (37580)
GL_MAX_VERTEX_ATOMIC_COUNTERS (37586)
GL_UNIFORM_ATOMIC_COUNTER_BUFFER_INDEX (37594)
GL_UNSIGNED_INT_ATOMIC_COUNTER (37595)