GLAPI/glGetProgramResourceName

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

glGetProgramResourceName: query the name of an indexed resource within a program

Function Definition

 void glGetProgramResourceName(GLuint program​, GLenum programInterface​, GLuint index​, GLsizei bufSize​, GLsizei * length​, char * name​);
program
The name of a program object whose resources to query.
programInterface
A token identifying the interface within program​ containing the indexed resource.
index
The index of the resource within programInterface​ of program​.
bufSize
The size of the character array whose address is given by name​.
length
The address of a variable which will receive the length of the resource name.
name
The address of a character array into which will be written the name of the resource.

Description

glGetProgramResourceName retrieves the name string assigned to the single active resource with an index of index​ in the interface programInterface​ of program object program​. index​ must be less than the number of entries in the active resource list for programInterface​.

program​ must be the name of an existing program object. programInterface​ is the name of the interface within program​ which contains the resource 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_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​.

The name string assigned to the active resource identified by index​ is returned as a null-terminated string in the character array whose address is given in name​. The actual number of characters written into name​, excluding the null terminator, is returned in length​. If length​ is NULL, no length is returned. The maximum number of characters that may be written into name​, including the null terminator, is specified by bufSize​. If the length of the name string including the null terminator is greater than bufSize​, the first bufSize​-1 characters of the name string will be written to name​, followed by a null terminator. If bufSize​ is zero, no error will be generated but no characters will be written to name​. The length of the longest name string for programInterface​>, including a null terminator, can be queried by calling glGetProgramInterface with a pname​ of GL_MAX_NAME_LENGTH​.

Errors

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

GL_INVALID_VALUE​ is generated if progam​ is not the name of an existing program.

GL_INVALID_VALUE​ is generated if index​ is greater than or equal to the number of entries in the active resource list for programInterface​.

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.

Associated Gets

glGetProgramInterface, with the same programInterface​, and GL_ACTIVE_RESOURCES​

glGetProgramResourceIndex

See Also

glGetProgramResource, glGetActiveSubroutineName, glGetActiveSubroutineUniformName, glGetActiveUniformBlockName, glGetActiveUniformName

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