GLAPI/glUniformSubroutines: Difference between revisions

From OpenGL Wiki
Jump to navigation Jump to search
m Bot: Adjusting API page category.
 
(7 intermediate revisions by 2 users not shown)
Line 9: Line 9:
== Function Definition ==
== Function Definition ==


   void '''glUniformSubroutinesuiv'''(GLenum ''shadertype'', GLsizei ''count'', const GLuint *''indices'');
   void '''glUniformSubroutinesuiv'''(GLenum {{param|shadertype}}, GLsizei {{param|count}}, const GLuint *{{param|indices}});


; shadertype
; shadertype
: Specifies the shader stage from which to query for subroutine uniform index. ''shadertype'' must be one of {{code|GL_VERTEX_SHADER}}, {{code|GL_TESS_CONTROL_SHADER}}, {{code|GL_TESS_EVALUATION_SHADER}}, {{code|GL_GEOMETRY_SHADER}} or {{code|GL_FRAGMENT_SHADER}}.
: Specifies the shader stage from which to query for subroutine uniform index. {{param|shadertype}} must be one of {{enum|GL_VERTEX_SHADER}}, {{enum|GL_TESS_CONTROL_SHADER}}, {{enum|GL_TESS_EVALUATION_SHADER}}, {{enum|GL_GEOMETRY_SHADER}} or {{enum|GL_FRAGMENT_SHADER}}.
; count
; count
: Specifies the number of uniform indices stored in ''indices''.
: Specifies the number of uniform indices stored in {{param|indices}}.
; indices
; indices
: Specifies the address of an array holding the indices to load into the shader subroutine variables.
: Specifies the address of an array holding the indices to load into the shader subroutine variables.
Line 20: Line 20:
== Description ==
== 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 {{code|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 {{code|GL_ACTIVE_SUBROUTINES}} for the shader stage.
'''glUniformSubroutines''' loads all active subroutine uniforms for shader stage {{param|shadertype}} of the current program with subroutine indices from {{param|indices}}, storing {{param|indices[i]}} into the uniform at location {{param|i}}. {{param|count}} must be equal to the value of {{enum|GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS}} for the program currently in use at shader stage {{param|shadertype}}. Furthermore, all values in {{param|indices}} must be less than the value of {{enum|GL_ACTIVE_SUBROUTINES}} for the shader stage.


== Errors ==
== Errors ==


{{code|GL_INVALID_OPERATION}} is generated if no program object is current.
{{enum|GL_INVALID_OPERATION}} is generated if no program object is current.


{{code|GL_INVALID_VALUE}} is generated if ''count'' is not equal to the value of {{code|GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS}} for the shader stage ''shadertype'' of the current program.
{{enum|GL_INVALID_VALUE}} is generated if {{param|count}} is not equal to the value of {{enum|GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS}} for the shader stage {{param|shadertype}} of the current program.


{{code|GL_INVALID_VALUE}} is generated if any value in ''indices'' is geater than or equal to the value of {{code|GL_ACTIVE_SUBROUTINES}} for the shader stage ''shadertype'' of the current program.
{{enum|GL_INVALID_VALUE}} is generated if any value in {{param|indices}} is geater than or equal to the value of {{enum|GL_ACTIVE_SUBROUTINES}} for the shader stage {{param|shadertype}} of the current program.


{{code|GL_INVALID_ENUM}} is generated if ''shadertype'' is not one of the accepted values.
{{enum|GL_INVALID_ENUM}} is generated if {{param|shadertype}} is not one of the accepted values.
 
{{enum|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 ==
== Associated Gets ==


[[GLAPI/glGetProgramStage|glGetProgramStage]] with argument {{code|GL_ACTIVE_SUBROUTINES}}
{{apifunc|glGetProgramStage}} with argument {{enum|GL_ACTIVE_SUBROUTINES}}
 
{{apifunc|glGetProgramStage}} with argument {{enum|GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS}}
 
{{apifunc|glGetProgramInterface}} with {{param|programInterface}} as {{enum|GL_VERTEX_SUBROUTINE​}}, {{enum|GL_TESS_CONTROL_SUBROUTINE​}}, {{enum|GL_TESS_EVALUATION_SUBROUTINE​}}, {{enum|GL_GEOMETRY_SUBROUTINE​}} or, {{enum|GL_FRAGMENT_SUBROUTINE​}}; and {{enum|GL_ACTIVE_RESOURCES}}


[[GLAPI/glGetProgramStage|glGetProgramStage]] with argument {{code|GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS}}
{{apifunc|glGetProgramInterface}} with {{param|programInterface}} as {{enum|GL_VERTEX_SUBROUTINE​_UNIFORM}}, {{enum|GL_TESS_CONTROL_SUBROUTINE​​_UNIFORM}}, {{enum|GL_TESS_EVALUATION_SUBROUTINE​​_UNIFORM}}, {{enum|GL_GEOMETRY_SUBROUTINE​​_UNIFORM}} or, {{enum|GL_FRAGMENT_SUBROUTINE​_UNIFORM​}}; and {{enum|GL_ACTIVE_RESOURCES}}


== See Also ==
== See Also ==


[[GLAPI/glGetProgram|glGetProgram]], [[GLAPI/glGetActiveSubroutineUniform|glGetActiveSubroutineUniform]], [[GLAPI/glGetActiveSubroutineUniformName|glGetActiveSubroutineUniformName]], [[GLAPI/glGetProgramStage|glGetProgramStage]]
{{apifunc|glGetActiveSubroutineUniform}}, {{apifunc|glGetActiveSubroutineUniformName}}, {{apifunc|glGetProgramResourceName}}, {{apifunc|glGetProgramResource}}, {{apifunc|glGetSubroutineUniformLocation}}


== Copyright ==
== Copyright ==
Line 46: Line 52:
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/ http://opencontent.org/openpub/].
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/ http://opencontent.org/openpub/].


[[Category:API Reference 4|UniformSubroutines]]
[[Category:Core API Ref Shader Program Usage and State|UniformSubroutines]]
[[Category:GL 4 API Shader Program Usage and State|UniformSubroutines]]
[[Category:Core API Reference|UniformSubroutines]]

Latest revision as of 10:31, 20 April 2013

glUniformSubroutines
Core in version 4.6
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/.