This extension introduces the concept of a group of GLSL uniforms known as a "uniform block", and the API mechanisms to store "uniform blocks" in GL buffer objects.
The extension also defines both a standard cross-platform layout in memory for uniform block data, as well as mechanisms to allow the GL to optimize the data layout in an implementation-defined manner.
Prior to this extension, the existing interface for modification of uniform values allowed modification of large numbers of values using glUniform* calls, but only for a single uniform name (or a uniform array) at a time. However, updating uniforms in this manner may not map well to heterogenous uniform data structures defined for a GL application and in these cases, the application is forced to either:
These solutions have their disadvantages. Solution A imposes considerable development overhead on the application developer. Solution B may impose considerable run-time overhead on the application if the number of uniforms modified in a given frame of rendering is sufficiently large.
This extension provides a better alternative to either (A) or (B) by allowing buffer object backing for the storage associated with all uniforms of a given GLSL program.
Storing uniform blocks in buffer objects enables several key use cases:
The data storage for a uniform block can be declared to use one of three layouts in memory: packed, shared, or std140.
Any uniforms not declared in a named uniform block are said to be part of the "default uniform block".
While uniforms in the default uniform block are updated with glUniform* entry points and can have static initializers, uniforms in named uniform blocks are not. Instead, uniform block data is updated using the routines that update buffer objects and can not use static initializers.
Rules and Concepts Guiding this Specification:
For reference, a uniform has a "uniform index" (subsequently referred to as "u_index) and also a "uniform location" to efficiently identify it in the uniform data store of the implementation. We subsequently refer to this uniform data store of the implementation as the "uniform database".
A "uniform block" only has a "uniform block index" used for queries and connecting the "uniform block" to a buffer object. A "uniform block" has no "location" because "uniform blocks" are not updated directly. The buffer object APIs are used instead.
Properties of Uniforms and uniform blocks:
INVALID_INDEX.INVALID_INDEX.INVALID_INDEX generates the INVALID_VALUE error if given as a function argument.Requires OpenGL 2. or ARB_shader_objects and OpenGL 1. or ARB_vertex_buffer_object. Promoted to core in OpenGL 3..
| Modifier and Type | Field and Description |
|---|---|
| public static final int | GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH
Accepted by the |
| public static final int | GL_ACTIVE_UNIFORM_BLOCKS
Accepted by the |
| public static final int | GL_INVALID_INDEX
Returned by GetActiveUniformsiv and GetUniformBlockIndex. |
| public static final int | GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS
Accepted by the |
| public static final int | GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS
Accepted by the |
| public static final int | GL_MAX_COMBINED_UNIFORM_BLOCKS
Accepted by the |
| public static final int | GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS
Accepted by the |
| public static final int | GL_MAX_FRAGMENT_UNIFORM_BLOCKS
Accepted by the |
| public static final int | GL_MAX_GEOMETRY_UNIFORM_BLOCKS
Accepted by the |
| public static final int | GL_MAX_UNIFORM_BLOCK_SIZE
Accepted by the |
| public static final int | GL_MAX_UNIFORM_BUFFER_BINDINGS
Accepted by the |
| public static final int | GL_MAX_VERTEX_UNIFORM_BLOCKS
Accepted by the |
| public static final int | GL_UNIFORM_ARRAY_STRIDE
Accepted by the |
| public static final int | GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES
Accepted by the |
| public static final int | GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS
Accepted by the |
| public static final int | GL_UNIFORM_BLOCK_BINDING
Accepted by the |
| public static final int | GL_UNIFORM_BLOCK_DATA_SIZE
Accepted by the |
| public static final int | GL_UNIFORM_BLOCK_INDEX
Accepted by the |
| public static final int | GL_UNIFORM_BLOCK_NAME_LENGTH
Accepted by the |
| public static final int | GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER
Accepted by the |
| public static final int | GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER
Accepted by the |
| public static final int | GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER
Accepted by the |
| public static final int | GL_UNIFORM_BUFFER
Accepted by the |
| public static final int | GL_UNIFORM_BUFFER_BINDING
Accepted by the |
| public static final int | GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT
Accepted by the |
| public static final int | GL_UNIFORM_BUFFER_SIZE
Accepted by the |
| public static final int | GL_UNIFORM_BUFFER_START
Accepted by the |
| public static final int | GL_UNIFORM_IS_ROW_MAJOR
Accepted by the |
| public static final int | GL_UNIFORM_MATRIX_STRIDE
Accepted by the |
| public static final int | GL_UNIFORM_NAME_LENGTH
Accepted by the |
| public static final int | GL_UNIFORM_OFFSET
Accepted by the |
| public static final int | GL_UNIFORM_SIZE
Accepted by the |
| public static final int | GL_UNIFORM_TYPE
Accepted by the |
| Access | Constructor and Description |
|---|---|
| protected |
| Modifier and Type | Method and Description | ||||
|---|---|---|---|---|---|
| public static void | glBindBufferBase(int
the target of the bind operation. One of: target, int
the index of the binding point within the array specified by index, int targeta buffer object to bind to the specified binding point buffer)Binds a buffer object to an indexed buffer target. | ||||
| public static void | glBindBufferRange(int
the target of the bind operation. One of: target, int
the index of the binding point within the array specified by index, int targeta buffer object to bind to the specified binding point buffer, long the starting offset in basic machine units into the buffer object offset, long bufferthe amount of data in machine units that can be read from the buffer object while used as an indexed target size)Binds a range within a buffer object to an indexed buffer target. | ||||
| public static int | glGetActiveUniformBlocki(int
the name of a program containing the uniform block program, int the index of the uniform block within uniformBlockIndex, int programthe name of the parameter to query. One of: pname)Queries information about an active uniform block. | ||||
| public static void | glGetActiveUniformBlockiv(int
the name of a program containing the uniform block program, int the index of the uniform block within uniformBlockIndex, int programthe name of the parameter to query. One of: pname, IntBuffer the address of a variable to receive the result of the query params)Queries information about an active uniform block. | ||||
| public static void | glGetActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, int[] params)
Array version of: | ||||
| public static void | glGetActiveUniformBlockName(int
the name of a program containing the uniform block program, int the index of the uniform block within uniformBlockIndex, IntBuffer programthe address of a variable to receive the number of characters that were written to length, ByteBuffer uniformBlockNamean array of characters to receive the name of the uniform block at uniformBlockName)uniformBlockIndexRetrieves the name of an active uniform block. | ||||
| public static String | glGetActiveUniformBlockName(int
the name of a program containing the uniform block program, int the index of the uniform block within uniformBlockIndex, int programthe size of the buffer addressed by bufSize)uniformBlockNameRetrieves the name of an active uniform block. | ||||
| public static String | glGetActiveUniformBlockName(int
the name of a program containing the uniform block program, int the index of the uniform block within uniformBlockIndex)programRetrieves the name of an active uniform block. | ||||
| public static void | glGetActiveUniformBlockName(int program, int uniformBlockIndex, int[] length, ByteBuffer uniformBlockName)
Array version of: | ||||
| public static void | glGetActiveUniformName(int
the program containing the active uniform index program, int uniformIndexthe index of the active uniform whose name to query uniformIndex, IntBuffer the address of a variable that will receive the number of characters that were or would have been written to the buffer addressed by length, ByteBuffer uniformNamethe address of a buffer into which the GL will place the name of the active uniform at uniformName)uniformIndex within programQueries the name of an active uniform. | ||||
| public static String | glGetActiveUniformName(int
the program containing the active uniform index program, int uniformIndexthe index of the active uniform whose name to query uniformIndex, int the size of the buffer, in units of bufSize)GLchar, of the buffer whose address is specified in uniformNameQueries the name of an active uniform. | ||||
| public static String | glGetActiveUniformName(int
the program containing the active uniform index program, int uniformIndexthe index of the active uniform whose name to query uniformIndex)Queries the name of an active uniform. | ||||
| public static void | glGetActiveUniformName(int program, int uniformIndex, int[] length, ByteBuffer uniformName)
Array version of: | ||||
| public static int | glGetActiveUniformsi(int
the program object to be queried program, int uniformIndex, int the property of the each uniform in pname)uniformIndices that should be written into the corresponding element of paramsReturns information about several active uniform variables for the specified program object. | ||||
| public static void | glGetActiveUniformsiv(int
the program object to be queried program, IntBuffer an array of uniformIndices, int uniformCount integers containing the indices of uniforms within programthe property of the each uniform in pname, IntBuffer uniformIndices that should be written into the corresponding element of paramsan array of params)uniformCount integers which are to receive the value of pname for each uniform in uniformIndicesReturns information about several active uniform variables for the specified program object. | ||||
| public static void | glGetActiveUniformsiv(int program, int[] uniformIndices, int pname, int[] params)
Array version of: | ||||
| public static int | glGetIntegeri(int
the indexed state to query target, int the index of the element being queried index)Queries the integer value of an indexed state variable. | ||||
| public static void | glGetIntegeri_v(int
the indexed state to query target, int the index of the element being queried index, IntBuffer a scalar or buffer in which to place the returned data data)Queries the integer value of an indexed state variable. | ||||
| public static void | |||||
| public static int | glGetUniformBlockIndex(int
the name of a program containing the uniform block program, ByteBuffer an array of characters to containing the name of the uniform block whose index to retrieve uniformBlockName)Retrieves the index of a named uniform block. | ||||
| public static int | glGetUniformBlockIndex(int
the name of a program containing the uniform block program, CharSequence an array of characters to containing the name of the uniform block whose index to retrieve uniformBlockName)Retrieves the index of a named uniform block. | ||||
| public static void | glGetUniformIndices(int
the name of a program containing uniforms whose indices to query program, PointerBuffer an array of pointers to buffers containing the names of the queried uniforms uniformNames, IntBuffer an array that will receive the indices of the uniforms uniformIndices)Retrieves the indices of a number of uniforms within a program object | ||||
| public static void | glGetUniformIndices(int
the name of a program containing uniforms whose indices to query program, CharSequence[] an array of pointers to buffers containing the names of the queried uniforms uniformNames, IntBuffer an array that will receive the indices of the uniforms uniformIndices)Retrieves the indices of a number of uniforms within a program object | ||||
| public static int | glGetUniformIndices(int
the name of a program containing uniforms whose indices to query program, CharSequence uniformName)Retrieves the indices of a number of uniforms within a program object | ||||
| public static void | glGetUniformIndices(int program, PointerBuffer uniformNames, int[] uniformIndices)
Array version of: | ||||
| public static void | glUniformBlockBinding(int
the name of a program object containing the active uniform block whose binding to assign program, int the index of the active uniform block within uniformBlockIndex, int program whose binding to assignthe binding point to which to bind the uniform block with index uniformBlockBinding)uniformBlockIndex within programAssigns a binding point to an active uniform block. | ||||
| public static void | nglGetActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, long params)
Unsafe version of: | ||||
| public static void | nglGetActiveUniformBlockName(int program, int uniformBlockIndex, int
the size of the buffer addressed by bufSize, long length, long uniformBlockName)uniformBlockNameUnsafe version of: | ||||
| public static void | nglGetActiveUniformName(int program, int uniformIndex, int
the size of the buffer, in units of bufSize, long length, long uniformName)GLchar, of the buffer whose address is specified in uniformNameUnsafe version of: | ||||
| public static void | nglGetActiveUniformsiv(int program, int
the number of elements in the array of indices uniformCount, long uniformIndices, int pname, long params)uniformIndices and the number of parameters written to params upon successful returnUnsafe version of: | ||||
| public static void | |||||
| public static int | |||||
| public static void | nglGetUniformIndices(int program, int
the number of uniforms whose indices to query uniformCount, long uniformNames, long uniformIndices)Unsafe version of: |
| GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH | back to summary |
|---|---|
| public static final int GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH Accepted by the | |
| GL_ACTIVE_UNIFORM_BLOCKS | back to summary |
|---|---|
| public static final int GL_ACTIVE_UNIFORM_BLOCKS Accepted by the | |
| GL_INVALID_INDEX | back to summary |
|---|---|
| public static final int GL_INVALID_INDEX Returned by GetActiveUniformsiv and GetUniformBlockIndex. | |
| GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS | back to summary |
|---|---|
| public static final int GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS Accepted by the | |
| GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS | back to summary |
|---|---|
| public static final int GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS Accepted by the | |
| GL_MAX_COMBINED_UNIFORM_BLOCKS | back to summary |
|---|---|
| public static final int GL_MAX_COMBINED_UNIFORM_BLOCKS Accepted by the | |
| GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS | back to summary |
|---|---|
| public static final int GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS Accepted by the | |
| GL_MAX_FRAGMENT_UNIFORM_BLOCKS | back to summary |
|---|---|
| public static final int GL_MAX_FRAGMENT_UNIFORM_BLOCKS Accepted by the | |
| GL_MAX_GEOMETRY_UNIFORM_BLOCKS | back to summary |
|---|---|
| public static final int GL_MAX_GEOMETRY_UNIFORM_BLOCKS Accepted by the | |
| GL_MAX_UNIFORM_BLOCK_SIZE | back to summary |
|---|---|
| public static final int GL_MAX_UNIFORM_BLOCK_SIZE Accepted by the | |
| GL_MAX_UNIFORM_BUFFER_BINDINGS | back to summary |
|---|---|
| public static final int GL_MAX_UNIFORM_BUFFER_BINDINGS Accepted by the | |
| GL_MAX_VERTEX_UNIFORM_BLOCKS | back to summary |
|---|---|
| public static final int GL_MAX_VERTEX_UNIFORM_BLOCKS Accepted by the | |
| GL_UNIFORM_ARRAY_STRIDE | back to summary |
|---|---|
| public static final int GL_UNIFORM_ARRAY_STRIDE Accepted by the | |
| GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES | back to summary |
|---|---|
| public static final int GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES Accepted by the | |
| GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS | back to summary |
|---|---|
| public static final int GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS Accepted by the | |
| GL_UNIFORM_BLOCK_BINDING | back to summary |
|---|---|
| public static final int GL_UNIFORM_BLOCK_BINDING Accepted by the | |
| GL_UNIFORM_BLOCK_DATA_SIZE | back to summary |
|---|---|
| public static final int GL_UNIFORM_BLOCK_DATA_SIZE Accepted by the | |
| GL_UNIFORM_BLOCK_INDEX | back to summary |
|---|---|
| public static final int GL_UNIFORM_BLOCK_INDEX Accepted by the | |
| GL_UNIFORM_BLOCK_NAME_LENGTH | back to summary |
|---|---|
| public static final int GL_UNIFORM_BLOCK_NAME_LENGTH Accepted by the | |
| GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER | back to summary |
|---|---|
| public static final int GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER Accepted by the | |
| GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER | back to summary |
|---|---|
| public static final int GL_UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER Accepted by the | |
| GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER | back to summary |
|---|---|
| public static final int GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER Accepted by the | |
| GL_UNIFORM_BUFFER | back to summary |
|---|---|
| public static final int GL_UNIFORM_BUFFER Accepted by the | |
| GL_UNIFORM_BUFFER_BINDING | back to summary |
|---|---|
| public static final int GL_UNIFORM_BUFFER_BINDING Accepted by the | |
| GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT | back to summary |
|---|---|
| public static final int GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT Accepted by the | |
| GL_UNIFORM_BUFFER_SIZE | back to summary |
|---|---|
| public static final int GL_UNIFORM_BUFFER_SIZE Accepted by the | |
| GL_UNIFORM_BUFFER_START | back to summary |
|---|---|
| public static final int GL_UNIFORM_BUFFER_START Accepted by the | |
| GL_UNIFORM_IS_ROW_MAJOR | back to summary |
|---|---|
| public static final int GL_UNIFORM_IS_ROW_MAJOR Accepted by the | |
| GL_UNIFORM_MATRIX_STRIDE | back to summary |
|---|---|
| public static final int GL_UNIFORM_MATRIX_STRIDE Accepted by the | |
| GL_UNIFORM_NAME_LENGTH | back to summary |
|---|---|
| public static final int GL_UNIFORM_NAME_LENGTH Accepted by the | |
| GL_UNIFORM_OFFSET | back to summary |
|---|---|
| public static final int GL_UNIFORM_OFFSET Accepted by the | |
| GL_UNIFORM_SIZE | back to summary |
|---|---|
| public static final int GL_UNIFORM_SIZE Accepted by the | |
| GL_UNIFORM_TYPE | back to summary |
|---|---|
| public static final int GL_UNIFORM_TYPE Accepted by the | |
| ARBUniformBufferObject | back to summary |
|---|---|
| protected ARBUniformBufferObject() | |
| glBindBufferBase | back to summary | ||||
|---|---|---|---|---|---|
| public static void glBindBufferBase(int target, int index, int buffer) Binds a buffer object to an indexed buffer target.
| |||||
| glBindBufferRange | back to summary | ||||
|---|---|---|---|---|---|
| public static void glBindBufferRange(int target, int index, int buffer, long offset, long size) Binds a range within a buffer object to an indexed buffer target.
| |||||
| glGetActiveUniformBlocki | back to summary |
|---|---|
| public static int glGetActiveUniformBlocki(int program, int uniformBlockIndex, int pname) Queries information about an active uniform block.
| |
| glGetActiveUniformBlockiv | back to summary |
|---|---|
| public static void glGetActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, IntBuffer params) Queries information about an active uniform block.
| |
| glGetActiveUniformBlockiv | back to summary |
|---|---|
| public static void glGetActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, int[] params) Array version of: | |
| glGetActiveUniformBlockName | back to summary |
|---|---|
| public static void glGetActiveUniformBlockName(int program, int uniformBlockIndex, IntBuffer length, ByteBuffer uniformBlockName) Retrieves the name of an active uniform block.
| |
| glGetActiveUniformBlockName | back to summary |
|---|---|
| public static String glGetActiveUniformBlockName(int program, int uniformBlockIndex, int bufSize) Retrieves the name of an active uniform block.
| |
| glGetActiveUniformBlockName | back to summary |
|---|---|
| public static String glGetActiveUniformBlockName(int program, int uniformBlockIndex) Retrieves the name of an active uniform block.
| |
| glGetActiveUniformBlockName | back to summary |
|---|---|
| public static void glGetActiveUniformBlockName(int program, int uniformBlockIndex, int[] length, ByteBuffer uniformBlockName) Array version of: | |
| glGetActiveUniformName | back to summary |
|---|---|
| public static void glGetActiveUniformName(int program, int uniformIndex, IntBuffer length, ByteBuffer uniformName) Queries the name of an active uniform.
| |
| glGetActiveUniformName | back to summary |
|---|---|
| public static String glGetActiveUniformName(int program, int uniformIndex, int bufSize) Queries the name of an active uniform.
| |
| glGetActiveUniformName | back to summary |
|---|---|
| public static String glGetActiveUniformName(int program, int uniformIndex) Queries the name of an active uniform.
| |
| glGetActiveUniformName | back to summary |
|---|---|
| public static void glGetActiveUniformName(int program, int uniformIndex, int[] length, ByteBuffer uniformName) Array version of: | |
| glGetActiveUniformsi | back to summary |
|---|---|
| public static int glGetActiveUniformsi(int program, int uniformIndex, int pname) Returns information about several active uniform variables for the specified program object.
| |
| glGetActiveUniformsiv | back to summary |
|---|---|
| public static void glGetActiveUniformsiv(int program, IntBuffer uniformIndices, int pname, IntBuffer params) Returns information about several active uniform variables for the specified program object.
| |
| glGetActiveUniformsiv | back to summary |
|---|---|
| public static void glGetActiveUniformsiv(int program, int[] uniformIndices, int pname, int[] params) Array version of: | |
| glGetIntegeri | back to summary |
|---|---|
| public static int glGetIntegeri(int target, int index) Queries the integer value of an indexed state variable.
| |
| glGetIntegeri_v | back to summary |
|---|---|
| public static void glGetIntegeri_v(int target, int index, IntBuffer data) Queries the integer value of an indexed state variable.
| |
| glGetIntegeri_v | back to summary |
|---|---|
| public static void glGetIntegeri_v(int target, int index, int[] data) Array version of: | |
| glGetUniformBlockIndex | back to summary |
|---|---|
| public static int glGetUniformBlockIndex(int program, ByteBuffer uniformBlockName) Retrieves the index of a named uniform block.
| |
| glGetUniformBlockIndex | back to summary |
|---|---|
| public static int glGetUniformBlockIndex(int program, CharSequence uniformBlockName) Retrieves the index of a named uniform block.
| |
| glGetUniformIndices | back to summary |
|---|---|
| public static void glGetUniformIndices(int program, PointerBuffer uniformNames, IntBuffer uniformIndices) Retrieves the indices of a number of uniforms within a program object
| |
| glGetUniformIndices | back to summary |
|---|---|
| public static void glGetUniformIndices(int program, CharSequence[] uniformNames, IntBuffer uniformIndices) Retrieves the indices of a number of uniforms within a program object
| |
| glGetUniformIndices | back to summary |
|---|---|
| public static int glGetUniformIndices(int program, CharSequence uniformName) Retrieves the indices of a number of uniforms within a program object
| |
| glGetUniformIndices | back to summary |
|---|---|
| public static void glGetUniformIndices(int program, PointerBuffer uniformNames, int[] uniformIndices) Array version of: | |
| glUniformBlockBinding | back to summary |
|---|---|
| public static void glUniformBlockBinding(int program, int uniformBlockIndex, int uniformBlockBinding) Assigns a binding point to an active uniform block.
| |
| nglGetActiveUniformBlockiv | back to summary |
|---|---|
| public static void nglGetActiveUniformBlockiv(int program, int uniformBlockIndex, int pname, long params) Unsafe version of: | |
| nglGetActiveUniformBlockName | back to summary |
|---|---|
| public static void nglGetActiveUniformBlockName(int program, int uniformBlockIndex, int bufSize, long length, long uniformBlockName) Unsafe version of:
| |
| nglGetActiveUniformName | back to summary |
|---|---|
| public static void nglGetActiveUniformName(int program, int uniformIndex, int bufSize, long length, long uniformName) Unsafe version of:
| |
| nglGetActiveUniformsiv | back to summary |
|---|---|
| public static void nglGetActiveUniformsiv(int program, int uniformCount, long uniformIndices, int pname, long params) Unsafe version of:
| |
| nglGetIntegeri_v | back to summary |
|---|---|
| public static void nglGetIntegeri_v(int target, int index, long data) Unsafe version of: | |
| nglGetUniformBlockIndex | back to summary |
|---|---|
| public static int nglGetUniformBlockIndex(int program, long uniformBlockName) Unsafe version of: | |
| nglGetUniformIndices | back to summary |
|---|---|
| public static void nglGetUniformIndices(int program, int uniformCount, long uniformNames, long uniformIndices) Unsafe version of:
| |