glGetSubroutineUniformLocation

From OpenGL Reference
Jump to navigation Jump to search

Retrieve the location of a subroutine uniform of a given shader stage within a program.

C Specification[edit]

GLint glGetSubroutineUniformLocation( GLuint program, GLenum shadertype, const GLchar * name );


Parameters[edit]

program - Specifies the name of the program containing shader stage.
shadertype - Specifies the shader stage from which to query for subroutine uniform index. shadertype must be one of GL_VERTEX_SHADER , GL_TESS_CONTROL_SHADER , GL_TESS_EVALUATION_SHADER , GL_GEOMETRY_SHADER or GL_FRAGMENT_SHADER .
name - Specifies the name of the subroutine uniform whose index to query.


Description[edit]

 glGetSubroutineUniformLocation returns the location of the subroutine uniform variable name in the shader stage of type shadertype attached to program , with behavior otherwise identical to glGetUniformLocation .

If name is not the name of a subroutine uniform in the shader stage, -1 is returned, but no error is generated. If name is the name of a subroutine uniform in the shader stage, a value between zero and the value of GL_ACTIVE_SUBROUTINE_LOCATIONS minus one will be returned. Subroutine locations are assigned using consecutive integers in the range from zero to the value of GL_ACTIVE_SUBROUTINE_LOCATIONS minus one for the shader stage. For active subroutine uniforms declared as arrays, the declared array elements are assigned consecutive locations.


Errors[edit]

 GL_INVALID_ENUM is generated if shadertype or pname is not one of the accepted values.

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


Version Support[edit]

 glGetSubroutineUniformLocation  4.0+

See Also[edit]

 glGetProgram , glGetActiveSubroutineUniform , glGetActiveSubroutineUniformName , glGetUniformLocation 


Copyright[edit]

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