GLAPI/glUseProgramStages: Difference between revisions

From OpenGL Wiki
Jump to navigation Jump to search
m Bot: Adding better formatting.
m Bot: Adding better formatting.
 
(6 intermediate revisions by 2 users not shown)
Line 20: Line 20:
== Description ==
== Description ==


'''glUseProgramStages''' binds executables from a program object associated with a specified set of shader stages to the program pipeline object given by {{param|pipeline}}. {{param|pipeline}} specifies the program pipeline object to which to bind the executables. {{param|stages}} contains a logical combination of bits indicating the shader stages to use within {{param|program}} with the program pipeline object {{param|pipeline}}. {{param|stages}} must be a logical combination of {{code|GL_VERTEX_SHADER_BIT}}, {{code|GL_TESS_CONTROL_SHADER_BIT}}, {{code|GL_TESS_EVALUATION_SHADER_BIT}}, {{code|GL_GEOMETRY_SHADER_BIT}}, and {{code|GL_FRAGMENT_SHADER_BIT}}. Additionally, the special value {{code|GL_ALL_SHADER_BITS}} may be specified to indicate that all executables contained in {{param|program}} should be installed in {{param|pipeline}}.
'''glUseProgramStages''' binds executables from a program object associated with a specified set of shader stages to the program pipeline object given by {{param|pipeline}}. {{param|pipeline}} specifies the program pipeline object to which to bind the executables. {{param|stages}} contains a logical combination of bits indicating the shader stages to use within {{param|program}} with the program pipeline object {{param|pipeline}}. {{param|stages}} must be a logical combination of {{enum|GL_VERTEX_SHADER_BIT}}, {{enum|GL_TESS_CONTROL_SHADER_BIT}}, {{enum|GL_TESS_EVALUATION_SHADER_BIT}}, {{enum|GL_GEOMETRY_SHADER_BIT}}, {{enum|GL_FRAGMENT_SHADER_BIT}} and {{enum|GL_COMPUTE_SHADER_BIT}}. Additionally, the special value {{enum|GL_ALL_SHADER_BITS}} may be specified to indicate that all executables contained in {{param|program}} should be installed in {{param|pipeline}}.


If {{param|program}} refers to a program object with a valid shader attached for an indicated shader stage, '''glUseProgramStages''' installs the executable code for that stage in the indicated program pipeline object {{param|pipeline}}. If {{param|program}} is zero, or refers to a program object with no valid shader executable for a given stage, it is as if the pipeline object has no programmable stage configured for the indicated shader stages. If {{param|stages}} contains bits other than those listed above, and is not equal to {{code|GL_ALL_SHADER_BITS}}, an error is generated.
If {{param|program}} refers to a program object with a valid shader attached for an indicated shader stage, '''glUseProgramStages''' installs the executable code for that stage in the indicated program pipeline object {{param|pipeline}}. If {{param|program}} is zero, or refers to a program object with no valid shader executable for a given stage, it is as if the pipeline object has no programmable stage configured for the indicated shader stages. If {{param|stages}} contains bits other than those listed above, and is not equal to {{enum|GL_ALL_SHADER_BITS}}, an error is generated.
 
== Notes ==
 
The {{enum|GL_COMPUTE_SHADER_BIT}} bit is available only if the GL version is 4.3 or greater.


== Errors ==
== Errors ==


{{code|GL_INVALID_VALUE}} is generated if {{param|shaders}} contains set bits that are not recognized, and is not the reserved value {{code|GL_ALL_SHADER_BITS}}.
{{enum|GL_INVALID_VALUE}} is generated if {{param|stages}} contains set bits that are not recognized, and is not the reserved value {{enum|GL_ALL_SHADER_BITS}}.


{{code|GL_INVALID_OPERATION}} is generated if {{param|program}} refers to a program object that was not linked with its {{code|GL_PROGRAM_SEPARABLE}} status set.
{{enum|GL_INVALID_OPERATION}} is generated if {{param|program}} refers to a program object that was not linked with its {{enum|GL_PROGRAM_SEPARABLE}} status set.


{{code|GL_INVALID_OPERATION}} is generated if {{param|program}} refers to a program object that has not been successfully linked.
{{enum|GL_INVALID_OPERATION}} is generated if {{param|program}} refers to a program object that has not been successfully linked.


{{code|GL_INVALID_OPERATION}} is generated if {{param|pipeline}} is not a name previously returned from a call to {{apifunc|glGenProgramPipelines}} or if such a name has been deleted by a call to {{apifunc|glDeleteProgramPipelines}}.
{{enum|GL_INVALID_OPERATION}} is generated if {{param|pipeline}} is not a name previously returned from a call to {{apifunc|glGenProgramPipelines}} or if such a name has been deleted by a call to {{apifunc|glDeleteProgramPipelines}}.


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


{{apifunc|glGenProgramPipelines}}, {{apifunc|glDeleteProgramPipelines}}, {{apifunc|glIsProgramPipeline}}
{{apifunc|glGenProgramPipelines}}, {{apifunc|glDeleteProgramPipelines}}, {{apifunc|glIsProgramPipeline}}, {{apifunc|glLinkProgram}}, {{apifunc|glCreateShaderProgram}}


== Copyright ==
== Copyright ==
Line 44: Line 48:
[[Category:Core API Reference|UseProgramStages]]
[[Category:Core API Reference|UseProgramStages]]
[[Category:Core API Ref Shader Program Creation|UseProgramStages]]
[[Category:Core API Ref Shader Program Creation|UseProgramStages]]
[[Category:Program Pipeline Object API State Functions|UseProgramStages]]

Latest revision as of 10:05, 15 August 2013

glUseProgramStages
Core in version 4.6
Core since version 4.1
Core ARB extension ARB_separate_shader_objects

glUseProgramStages: bind stages of a program object to a program pipeline

Function Definition

 void glUseProgramStages(GLuint pipeline​, GLbitfield stages​, GLuint program​);
pipeline
Specifies the program pipeline object to which to bind stages from program​.
stages
Specifies a set of program stages to bind to the program pipeline object.
program
Specifies the program object containing the shader executables to use in pipeline​.

Description

glUseProgramStages binds executables from a program object associated with a specified set of shader stages to the program pipeline object given by pipeline​. pipeline​ specifies the program pipeline object to which to bind the executables. stages​ contains a logical combination of bits indicating the shader stages to use within program​ with the program pipeline object pipeline​. stages​ must be a logical combination of GL_VERTEX_SHADER_BIT, GL_TESS_CONTROL_SHADER_BIT, GL_TESS_EVALUATION_SHADER_BIT, GL_GEOMETRY_SHADER_BIT, GL_FRAGMENT_SHADER_BIT and GL_COMPUTE_SHADER_BIT. Additionally, the special value GL_ALL_SHADER_BITS may be specified to indicate that all executables contained in program​ should be installed in pipeline​.

If program​ refers to a program object with a valid shader attached for an indicated shader stage, glUseProgramStages installs the executable code for that stage in the indicated program pipeline object pipeline​. If program​ is zero, or refers to a program object with no valid shader executable for a given stage, it is as if the pipeline object has no programmable stage configured for the indicated shader stages. If stages​ contains bits other than those listed above, and is not equal to GL_ALL_SHADER_BITS, an error is generated.

Notes

The GL_COMPUTE_SHADER_BIT bit is available only if the GL version is 4.3 or greater.

Errors

GL_INVALID_VALUE is generated if stages​ contains set bits that are not recognized, and is not the reserved value GL_ALL_SHADER_BITS.

GL_INVALID_OPERATION is generated if program​ refers to a program object that was not linked with its GL_PROGRAM_SEPARABLE status set.

GL_INVALID_OPERATION is generated if program​ refers to a program object that has not been successfully linked.

GL_INVALID_OPERATION is generated if pipeline​ is not a name previously returned from a call to glGenProgramPipelines or if such a name has been deleted by a call to glDeleteProgramPipelines.

See Also

glGenProgramPipelines, glDeleteProgramPipelines, glIsProgramPipeline, glLinkProgram, glCreateShaderProgram

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/.