GLAPI/glGetProgramInterface

From OpenGL.org
< GLAPI
Revision as of 06:21, 5 October 2012 by Alfonse (Talk | contribs) (Comma separation.)

Jump to: navigation, search
glGetProgramInterface
Core in version 4.5
Core since version 4.3
Core ARB extension ARB_program_interface_query

glGetProgramInterface: query a property of an interface in a program

Function Definition

 void glGetProgramInterfaceiv(GLuint program​, GLenum programInterface​, GLenum pname​, GLint * params​);
program
The name of a program object whose interface to query.
programInterface
A token identifying the interface within program​ to query.
pname
The name of the parameter within programInterface​ to query.
params
The address of a variable to retrieve the value of pname​ for the program interface.

Description

glGetProgramInterfaceiv queries the property of the interface identifed by programInterface​ in program​, the property name of which is given by pname​.

program​ must be the name of an existing program object. programInterface​ is the name of the interface within program​ to query 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_ATOMIC_COUNTER_BUFFER
The query is targeted at the set of active atomic counter buffer binding points 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​.

pname​ identifies the property of programInterface​ to return in params​.

If pname​ is GL_ACTIVE_RESOURCES, the value returned is the number of resources in the active resource list for programInterface​. If the list of active resources for programInterface​ is empty, zero is returned.

If pname​ is GL_MAX_NAME_LENGTH, the value returned is the length of the longest active name string for an active resource in programInterface​. This length includes an extra character for the null terminator. If the list of active resources for programInterface​ is empty, zero is returned. It is an error to specify GL_MAX_NAME_LENGTH when programInterface​ is GL_ATOMIC_COUNTER_BUFFER, as active atomic counter buffer resources are not assigned name strings.

If pname​ is GL_MAX_NUM_ACTIVE_VARIABLES, the value returned is the number of active variables belonging to the interface block or atomic counter buffer resource in programInterface​ with the most active variables. If the list of active resources for programInterface​ is empty, zero is returned. When pname​ is GL_MAX_NUM_ACTIVE_VARIABLES, programInterface​ must be GL_UNIFORM_BLOCK, GL_ATOMIC_COUNTER_BUFFER, or GL_SHADER_STORAGE_BLOCK.

If pname​ is GL_MAX_NUM_COMPATIBLE_SUBROUTINES, the value returned is the number of compatible subroutines belonging to the active subroutine uniform in programInterface​ with the most compatible subroutines. If the list of active resources for programInterface​ is empty, zero is returned. When pname​ is GL_MAX_NUM_COMPATIBLE_SUBROUTINES, programInterface​ must be one of GL_VERTEX_SUBROUTINE_UNIFORM, GL_TESS_CONTROL_SUBROUTINE_UNIFORM, GL_TESS_EVALUATION_SUBROUTINE_UNIFORM, GL_GEOMETRY_SUBROUTINE_UNIFORM, GL_FRAGMENT_SUBROUTINE_UNIFORM, or GL_COMPUTE_SUBROUTINE_UNIFORM.

Errors

GL_INVALID_ENUM is generated if identifier​ is not one of the accepted object types.

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

GL_INVALID_VALUE is generated if bufSize​ is zero.

If not NULL, length​ and label​ should be addresses to which the client has write access, otherwise undefined behavior, including process termination may occur.

Associated Gets

glGet with argument GL_MAX_LABEL_LENGTH.

See Also

glGetProgramResource, glGetProgramResourceName, glGetActiveAtomicCounterBuffer, glGetActiveAttrib, glGetActiveSubroutineName, glGetActiveSubroutineUniform, glGetActiveSubroutineUniformName, glGetActiveUniform, glGetActiveUniformBlock, glGetActiveUniformBlockName, glGetActiveUniformName, glGetActiveUniforms, 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/.