GLAPI/glUniformBlockBinding: Difference between revisions

From OpenGL Wiki
Jump to navigation Jump to search
m See Also: Missing link.
m Bot: Adding better formatting.
 
(6 intermediate revisions by the same user not shown)
Line 8: Line 8:
== Function Definition ==
== Function Definition ==


   void '''glUniformBlockBinding'''(GLuint ''program'', GLuint ''uniformBlockIndex'', GLuint ''uniformBlockBinding'');
   void '''glUniformBlockBinding'''(GLuint {{param|program}}, GLuint {{param|uniformBlockIndex}}, GLuint {{param|uniformBlockBinding}});


; program
; program
: The name of a program object containing the active uniform block whose binding to assign.
: The name of a program object containing the active uniform block whose binding to assign.
; uniformBlockIndex
; uniformBlockIndex
: The index of the active uniform block within ''program'' whose binding to assign.
: The index of the active uniform block within {{param|program}} whose binding to assign.
; uniformBlockBinding
; uniformBlockBinding
: Specifies the binding point to which to bind the uniform block with index ''uniformBlockIndex'' within ''program''.
: Specifies the binding point to which to bind the uniform block with index {{param|uniformBlockIndex}} within {{param|program}}.


== Description ==
== Description ==


Binding points for active uniform blocks are assigned using '''glUniformBlockBinding'''. Each of a program's active uniform blocks has a corresponding uniform buffer binding point. ''program'' is the name of a program object for which the command [[GLAPI/glLinkProgram|glLinkProgram]] has been issued in the past.
Binding points for active uniform blocks are assigned using '''glUniformBlockBinding'''. Each of a program's active uniform blocks has a corresponding uniform buffer binding point. {{param|program}} is the name of a program object for which the command {{apifunc|glLinkProgram}} has been issued in the past.


If successful, '''glUniformBlockBinding''' specifies that ''program'' will use the data store of the buffer object bound to the binding point ''uniformBlockBinding'' to extract the values of the uniforms in the uniform block identified by ''uniformBlockIndex''.
If successful, '''glUniformBlockBinding''' specifies that {{param|program}} will use the data store of the buffer object bound to the binding point {{param|uniformBlockBinding}} to extract the values of the uniforms in the uniform block identified by {{param|uniformBlockIndex}}.


When a program object is linked or re-linked, the uniform buffer object binding point assigned to each of its active uniform blocks is reset to zero.
When a program object is linked or re-linked, the uniform buffer object binding point assigned to each of its active uniform blocks is reset to zero.
Line 27: Line 27:
== Errors ==
== Errors ==


{{code|GL_INVALID_VALUE}} is generated if ''uniformBlockIndex'' is not an active uniform block index of ''program''.
{{enum|GL_INVALID_VALUE}} is generated if {{param|uniformBlockIndex}} is not an active uniform block index of {{param|program}}.


{{code|GL_INVALID_VALUE}} is generated if ''uniformBlockBinding'' is greater than or equal to the value of {{code|GL_MAX_UNIFORM_BUFFER_BINDINGS}}.
{{enum|GL_INVALID_VALUE}} is generated if {{param|uniformBlockBinding}} is greater than or equal to the value of {{enum|GL_MAX_UNIFORM_BUFFER_BINDINGS}}.


{{code|GL_INVALID_VALUE}} is generated ''program'' is not the name of a program object generated by the GL.
{{enum|GL_INVALID_VALUE}} is generated {{param|program}} is not the name of a program object generated by the GL.


== Notes ==
== Notes ==
Line 39: Line 39:
== Associated Gets ==
== Associated Gets ==


[[GLAPI/glGetActiveUniformBlock|glGetActiveUniformBlock]] with argument {{code|GL_UNIFORM_BLOCK_BINDING}}
{{apifunc|glGetUniformBlockIndex}} with the program and the name of the block.
 
{{apifunc|glGetProgramResourceIndex}} with the program, {{enum|GL_UNIFORM_BLOCK}}, and the name of the block.
 
{{apifunc|glGetActiveUniformBlock}} with argument {{enum|GL_UNIFORM_BLOCK_BINDING}}
 
{{apifunc|glGetProgramResource}} with {{enum|GL_UNIFORM_BLOCK}} and {{enum|GL_BUFFER_BINDING​}}


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


[[GLAPI/glLinkProgram|glLinkProgram]], [[GLAPI/glBindBufferBase|glBindBufferBase]], [[GLAPI/glBindBufferRange|glBindBufferRange]], [[GLAPI/glGetActiveUniformBlock|glGetActiveUniformBlock]], [[GLAPI/glGetUniformBlockIndex|glGetUniformBlockIndex]]
{{apifunc|glLinkProgram}}, {{apifunc|glBindBufferBase}}, {{apifunc|glBindBufferRange}}


== Copyright ==
== Copyright ==
Line 49: Line 55:
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|UniformBlockBinding]]
[[Category:Core API Ref Shader Program Usage and State|UniformBlockBinding]]
[[Category:Core API Reference|UniformBlockBinding]]
[[Category:Program Object API State Functions|UniformBlockBinding]]

Latest revision as of 10:05, 15 August 2013

glUniformBlockBinding
Core in version 4.6
Core since version 3.1

glUniformBlockBinding: assign a binding point to an active uniform block

Function Definition

 void glUniformBlockBinding(GLuint program​, GLuint uniformBlockIndex​, GLuint uniformBlockBinding​);
program
The name of a program object containing the active uniform block whose binding to assign.
uniformBlockIndex
The index of the active uniform block within program​ whose binding to assign.
uniformBlockBinding
Specifies the binding point to which to bind the uniform block with index uniformBlockIndex​ within program​.

Description

Binding points for active uniform blocks are assigned using glUniformBlockBinding. Each of a program's active uniform blocks has a corresponding uniform buffer binding point. program​ is the name of a program object for which the command glLinkProgram has been issued in the past.

If successful, glUniformBlockBinding specifies that program​ will use the data store of the buffer object bound to the binding point uniformBlockBinding​ to extract the values of the uniforms in the uniform block identified by uniformBlockIndex​.

When a program object is linked or re-linked, the uniform buffer object binding point assigned to each of its active uniform blocks is reset to zero.

Errors

GL_INVALID_VALUE is generated if uniformBlockIndex​ is not an active uniform block index of program​.

GL_INVALID_VALUE is generated if uniformBlockBinding​ is greater than or equal to the value of GL_MAX_UNIFORM_BUFFER_BINDINGS.

GL_INVALID_VALUE is generated program​ is not the name of a program object generated by the GL.

Notes

glUniformBlockBinding is available only if the GL version is 3.1 or greater.

Associated Gets

glGetUniformBlockIndex with the program and the name of the block.

glGetProgramResourceIndex with the program, GL_UNIFORM_BLOCK, and the name of the block.

glGetActiveUniformBlock with argument GL_UNIFORM_BLOCK_BINDING

glGetProgramResource with GL_UNIFORM_BLOCK and GL_BUFFER_BINDING​

See Also

glLinkProgram, glBindBufferBase, glBindBufferRange

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