Difference between revisions of "GLAPI/glGetProgramInterface"

From OpenGL Wiki
Jump to navigation Jump to search
(Bot: Adding better formatting.)
 
m (Bot: Adding better formatting.)
Line 72: Line 72:
 
== See Also ==
 
== See Also ==
  
{{apifunc|glPushDebugGroup}}, {{apifunc|glPopDebugGroup}}, {{apifunc|glObjectLabel}}, {{apifunc|glGetObjectLabel}}.
+
{{apifunc|glGetProgramResource}}, {{apifunc|glGetProgramResourceName}}, {{apifunc|glGetActiveAtomicCounterBuffer}}, {{apifunc|glGetActiveAttrib}}, {{apifunc|glGetActiveSubroutineName}}, {{apifunc|glGetActiveSubroutineUniform}}, {{apifunc|glGetActiveSubroutineUniformName}}, {{apifunc|glGetActiveUniform}}, {{apifunc|glGetActiveUniformBlock}}, {{apifunc|glGetActiveUniformBlockName}}, {{apifunc|glGetActiveUniformName}}, {{apifunc|glGetActiveUniforms}}, {{apifunc|glGetTransformFeedbackVarying}}
  
 
== Copyright ==
 
== Copyright ==

Revision as of 19:38, 27 September 2012

glGetProgramInterface
Core in version 4.6
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_SUBROUTINEGL_TESS_CONTROL_SUBROUTINEGL_TESS_EVALUATION_SUBROUTINEGL_GEOMETRY_SUBROUTINEGL_FRAGMENT_SUBROUTINEGL_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_UNIFORMGL_TESS_CONTROL_SUBROUTINE_UNIFORMGL_TESS_EVALUATION_SUBROUTINE_UNIFORMGL_GEOMETRY_SUBROUTINE_UNIFORMGL_FRAGMENT_SUBROUTINE_UNIFORMGL_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/.