GLAPI/glUniformSubroutines

From OpenGL.org
Jump to: navigation, search
glUniformSubroutines
Core in version 4.4
Core since version 4.0
Core ARB extension ARB_shader_subroutine

glUniformSubroutines: load active subroutine uniforms

Function Definition

 void glUniformSubroutinesuiv(GLenum shadertype​, GLsizei count​, const GLuint *indices​);
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​.
count
Specifies the number of uniform indices stored in indices​.
indices
Specifies the address of an array holding the indices to load into the shader subroutine variables.

Description

glUniformSubroutines loads all active subroutine uniforms for shader stage shadertype​ of the current program with subroutine indices from indices​, storing indices[i]​ into the uniform at location i​. count​ must be equal to the value of GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS​ for the program currently in use at shader stage shadertype​. Furthermore, all values in indices​ must be less than the value of GL_ACTIVE_SUBROUTINES​ for the shader stage.

Errors

GL_INVALID_OPERATION​ is generated if no program object is current.

GL_INVALID_VALUE​ is generated if count​ is not equal to the value of GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS​ for the shader stage shadertype​ of the current program.

GL_INVALID_VALUE​ is generated if any value in indices​ is geater than or equal to the value of GL_ACTIVE_SUBROUTINES​ for the shader stage shadertype​ of the current program.

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

GL_INVALID_OPERATION​ is generated if, for any subroutine index being loaded to a particular uniform location, the function corresponding to the subroutine index was not associated with the type of the subroutine variable at that location.

Associated Gets

glGetProgramStage with argument GL_ACTIVE_SUBROUTINES​

glGetProgramStage with argument GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS​

glGetProgramInterface with programInterface​ as GL_VERTEX_SUBROUTINE​​, GL_TESS_CONTROL_SUBROUTINE​​, GL_TESS_EVALUATION_SUBROUTINE​​, GL_GEOMETRY_SUBROUTINE​​ or, GL_FRAGMENT_SUBROUTINE​​; and GL_ACTIVE_RESOURCES​

glGetProgramInterface with programInterface​ as GL_VERTEX_SUBROUTINE​_UNIFORM​, GL_TESS_CONTROL_SUBROUTINE​​_UNIFORM​, GL_TESS_EVALUATION_SUBROUTINE​​_UNIFORM​, GL_GEOMETRY_SUBROUTINE​​_UNIFORM​ or, GL_FRAGMENT_SUBROUTINE​_UNIFORM​​; and GL_ACTIVE_RESOURCES​

See Also

glGetActiveSubroutineUniform, glGetActiveSubroutineUniformName, glGetProgramResourceName, glGetProgramResource, glGetSubroutineUniformLocation

Copyright

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