GLAPI/glGetProgramResourceIndex

From OpenGL.org
Jump to: navigation, search
glGetProgramResourceIndex
Core in version 4.4
Core since version 4.3
Core ARB extension ARB_program_interface_query

glGetProgramResourceIndex: query the index of a named resource within a program

Function Definition

 GLuint glGetProgramResourceIndex(GLuint program​, GLenum programInterface​, const char * name​);
program
The name of a program object whose resources to query.
programInterface
A token identifying the interface within program​ containing the resource named name​.
name
The name of the resource to query the index of.

Description

glGetProgramResourceIndex returns the unsigned integer index assigned to a resource named name​ in the interface type programInterface​ of program object program​.

program​ must be the name of an existing program object. programInterface​ is the name of the interface within program​ which contains the resource named name​and must be one of the following values:

GL_UNIFORM​
The query is targeted at the set of active uniforms within program​.
GL_UNIFORM_BLOCK​
The query is targeted at the set of active uniform blocks within program​.
GL_PROGRAM_INPUT​
The query is targeted at the set of active input variables used by the first shader stage of program​. If program​ contains multiple shader stages then input variables from any stage other than the first will not be enumerated.
GL_PROGRAM_OUTPUT​
The query is targeted at the set of active output variables produced by the last shader stage of program​. If program​ contains multiple shader stages then output variables from any stage other than the last will not be enumerated.
GL_VERTEX_SUBROUTINE​, GL_TESS_CONTROL_SUBROUTINE​GL_TESS_EVALUATION_SUBROUTINE​, GL_GEOMETRY_SUBROUTINE​, GL_FRAGMENT_SUBROUTINE​, GL_COMPUTE_SUBROUTINE​
The query is targeted at the set of active subroutines for the vertex, tessellation control, tessellation evaluation, geometry, fragment and compute shader stages of program​, respectively.
GL_VERTEX_SUBROUTINE_UNIFORM​, GL_TESS_CONTROL_SUBROUTINE_UNIFORM​, GL_TESS_EVALUATION_SUBROUTINE_UNIFORM​, GL_GEOMETRY_SUBROUTINE_UNIFORM​, GL_FRAGMENT_SUBROUTINE_UNIFORM​, GL_COMPUTE_SUBROUTINE_UNIFORM​
The query is targeted at the set of active subroutine uniform variables used by the vertex, tessellation control, tessellation evaluation, geometry, fragment and compute shader stages of program​, respectively.
GL_TRANSFORM_FEEDBACK_VARYING​
The query is targeted at the set of output variables from the last non-fragment stage of program​ that would be captured if transform feedback were active.
GL_TRANSFORM_FEEDBACK_BUFFER​
The query is targeted at the set of active buffer binding points to which output variables in the GL_TRANSFORM_FEEDBACK_VARYING​ interface are written.
GL_BUFFER_VARIABLE​
The query is targeted at the set of active buffer variables used by program​.
GL_SHADER_STORAGE_BLOCK​
The query is targeted at the set of active shader storage blocks used by program​.

If name​ exactly matches the name string of one of the active resources for programInterface​, the index of the matched resource is returned. Additionally, if name​ would exactly match the name string of an active resource if "[0]" were appended to name​, the index of the matched resource is returned. Otherwise, name​ is considered not to be the name of an active resource, and GL_INVALID_INDEX​ is returned.

For the interface GL_TRANSFORM_FEEDBACK_VARYING​, the value GL_INVALID_INDEX​ should be returned when querying the index assigned to the special names gl_NextBuffer​, gl_SkipComponents1​, gl_SkipComponents2​, gl_SkipComponents3​, or gl_SkipComponents4​.

Errors

GL_INVALID_ENUM​ is generated if programInterface​ is not one of the accepted interface types.

GL_INVALID_ENUM​ is generated if programInterface​ is GL_ATOMIC_COUNTER_BUFFER​ or GL_TRANSFORM_FEEDBACK_BUFFER​, since active atomic counter and transform feedback buffer resources are not assigned name strings.

Although not an error, GL_INVALID_INDEX​ is returned if name​ is not the name of a resource within the interface identified by programInterface​.

See Also

glGetProgramResourceName, glGetProgramResource, glGetActiveAtomicCounterBuffer, glGetActiveAttrib, glGetActiveSubroutineName, glGetActiveSubroutineUniform, glGetActiveSubroutineUniformName, glGetActiveUniform, glGetActiveUniformBlock, glGetActiveUniformBlockName, glGetActiveUniformName, glGetActiveUniforms, glGetUniformIndices, glGetTransformFeedbackVarying

Copyright

Copyright © 2012 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/.