Class EXTSeparateShaderObjects
- java.lang.Object
-
- org.lwjgl.opengles.EXTSeparateShaderObjects
-
public class EXTSeparateShaderObjects extends java.lang.ObjectNative bindings to the EXT_separate_shader_objects extension.This extension is a subset of ARB_separate_shader_objects appropriate for OpenGL ES, and also tacks on ARB_explicit_attrib_location functionality.
Conventional GLSL requires multiple shader stages (vertex and fragment) to be linked into a single monolithic program object to specify a GLSL shader for each stage.
While GLSL's monolithic approach has some advantages for optimizing shaders as a unit that span multiple stages, GPU hardware supports a more flexible mix-and-match approach to specifying shaders independently for these different shader stages. Many developers build their shader content around the mix-and-match approach where they can use a single vertex shader with multiple fragment shaders (or vice versa).
This extension adopts a "mix-and-match" shader stage model for GLSL allowing multiple different GLSL program objects to be bound at once each to an individual rendering pipeline stage independently of other stage bindings. This allows program objects to contain only the shader stages that best suit the application's needs.
This extension introduces the program pipeline object that serves as a container for the program bound to any particular rendering stage. It can be bound, unbound, and rebound to simply save and restore the complete shader stage to program object bindings. Like framebuffer and vertex array objects, program pipeline objects are "container" objects that are not shared between contexts.
To bind a program object to a specific shader stage or set of stages, UseProgramStagesEXT is used. The VERTEX_SHADER_BIT_EXT and FRAGMENT_SHADER_BIT_EXT tokens refer to the conventional vertex and fragment stages, respectively. ActiveShaderProgramEXT specifies the program that Uniform* commands will update.
While ActiveShaderProgramEXT provides a selector for setting and querying uniform values of a program object with the conventional Uniform* commands, the ProgramUniform* commands provide a selector-free way to modify uniforms of a GLSL program object without an explicit bind. This selector-free model reduces API overhead and provides a cleaner interface for applications.
Separate linking creates the possibility that certain output varyings of a shader may go unread by the subsequent shader input varyings. In this case, the output varyings are simply ignored. It is also possible input varyings from a shader may not be written as output varyings of a preceding shader. In this case, the unwritten input varying values are undefined.
This extension also introduces a layout location qualifier to GLSL to pre- assign attribute and varying locations to shader variables. This allows applications to globally assign a particular semantic meaning, such as diffuse color or vertex normal, to a particular attribute and/or varying location without knowing how that variable will be named in any particular shader.
Requires
GLES 2.0.
-
-
Field Summary
Fields Modifier and Type Field and Description static intGL_ACTIVE_PROGRAM_EXTAccepted bytypeparameter to GetProgramPipelineivEXT.static intGL_ALL_SHADER_BITS_EXT
GL_FRAGMENT_SHADER_BIT_EXTAccepted bystagesparameter to UseProgramStagesEXT.static intGL_PROGRAM_PIPELINE_BINDING_EXTAccepted by thepnameparameter of GetBooleanv, GetIntegerv, and GetFloatv.static intGL_PROGRAM_SEPARABLE_EXTAccepted by thepnameparameter of ProgramParameteriEXT and GetProgramiv.static intGL_VERTEX_SHADER_BIT_EXTAccepted bystagesparameter to UseProgramStagesEXT.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method and Description static voidglActiveShaderProgramEXT(int pipeline, int program)static voidglBindProgramPipelineEXT(int pipeline)static intglCreateShaderProgramvEXT(int type, java.lang.CharSequence... strings)static intglCreateShaderProgramvEXT(int type, java.lang.CharSequence string)static intglCreateShaderProgramvEXT(int type, PointerBuffer strings)static voidglDeleteProgramPipelinesEXT(int pipeline)static voidglDeleteProgramPipelinesEXT(int[] pipelines)Array version of:DeleteProgramPipelinesEXTstatic voidglDeleteProgramPipelinesEXT(java.nio.IntBuffer pipelines)static intglGenProgramPipelinesEXT()static voidglGenProgramPipelinesEXT(int[] pipelines)Array version of:GenProgramPipelinesEXTstatic voidglGenProgramPipelinesEXT(java.nio.IntBuffer pipelines)static intglGetProgramPipelineiEXT(int pipeline, int pname)static java.lang.StringglGetProgramPipelineInfoLogEXT(int pipeline)static java.lang.StringglGetProgramPipelineInfoLogEXT(int pipeline, int bufSize)static voidglGetProgramPipelineInfoLogEXT(int pipeline, int[] length, java.nio.ByteBuffer infoLog)Array version of:GetProgramPipelineInfoLogEXTstatic voidglGetProgramPipelineInfoLogEXT(int pipeline, java.nio.IntBuffer length, java.nio.ByteBuffer infoLog)static voidglGetProgramPipelineivEXT(int pipeline, int pname, int[] params)Array version of:GetProgramPipelineivEXTstatic voidglGetProgramPipelineivEXT(int pipeline, int pname, java.nio.IntBuffer params)static booleanglIsProgramPipelineEXT(int pipeline)static voidglProgramParameteriEXT(int program, int pname, int value)static voidglProgramUniform1fEXT(int program, int location, float v0)static voidglProgramUniform1fvEXT(int program, int location, float[] value)Array version of:ProgramUniform1fvEXTstatic voidglProgramUniform1fvEXT(int program, int location, java.nio.FloatBuffer value)static voidglProgramUniform1iEXT(int program, int location, int v0)static voidglProgramUniform1ivEXT(int program, int location, int[] value)Array version of:ProgramUniform1ivEXTstatic voidglProgramUniform1ivEXT(int program, int location, java.nio.IntBuffer value)static voidglProgramUniform1uiEXT(int program, int location, int v0)static voidglProgramUniform1uivEXT(int program, int location, int[] value)Array version of:ProgramUniform1uivEXTstatic voidglProgramUniform1uivEXT(int program, int location, java.nio.IntBuffer value)static voidglProgramUniform2fEXT(int program, int location, float v0, float v1)static voidglProgramUniform2fvEXT(int program, int location, float[] value)Array version of:ProgramUniform2fvEXTstatic voidglProgramUniform2fvEXT(int program, int location, java.nio.FloatBuffer value)static voidglProgramUniform2iEXT(int program, int location, int v0, int v1)static voidglProgramUniform2ivEXT(int program, int location, int[] value)Array version of:ProgramUniform2ivEXTstatic voidglProgramUniform2ivEXT(int program, int location, java.nio.IntBuffer value)static voidglProgramUniform2uiEXT(int program, int location, int v0, int v1)static voidglProgramUniform2uivEXT(int program, int location, int[] value)Array version of:ProgramUniform2uivEXTstatic voidglProgramUniform2uivEXT(int program, int location, java.nio.IntBuffer value)static voidglProgramUniform3fEXT(int program, int location, float v0, float v1, float v2)static voidglProgramUniform3fvEXT(int program, int location, float[] value)Array version of:ProgramUniform3fvEXTstatic voidglProgramUniform3fvEXT(int program, int location, java.nio.FloatBuffer value)static voidglProgramUniform3iEXT(int program, int location, int v0, int v1, int v2)static voidglProgramUniform3ivEXT(int program, int location, int[] value)Array version of:ProgramUniform3ivEXTstatic voidglProgramUniform3ivEXT(int program, int location, java.nio.IntBuffer value)static voidglProgramUniform3uiEXT(int program, int location, int v0, int v1, int v2)static voidglProgramUniform3uivEXT(int program, int location, int[] value)Array version of:ProgramUniform3uivEXTstatic voidglProgramUniform3uivEXT(int program, int location, java.nio.IntBuffer value)static voidglProgramUniform4fEXT(int program, int location, float v0, float v1, float v2, float v3)static voidglProgramUniform4fvEXT(int program, int location, float[] value)Array version of:ProgramUniform4fvEXTstatic voidglProgramUniform4fvEXT(int program, int location, java.nio.FloatBuffer value)static voidglProgramUniform4iEXT(int program, int location, int v0, int v1, int v2, int v3)static voidglProgramUniform4ivEXT(int program, int location, int[] value)Array version of:ProgramUniform4ivEXTstatic voidglProgramUniform4ivEXT(int program, int location, java.nio.IntBuffer value)static voidglProgramUniform4uiEXT(int program, int location, int v0, int v1, int v2, int v3)static voidglProgramUniform4uivEXT(int program, int location, int[] value)Array version of:ProgramUniform4uivEXTstatic voidglProgramUniform4uivEXT(int program, int location, java.nio.IntBuffer value)static voidglProgramUniformMatrix2fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix2fvEXTstatic voidglProgramUniformMatrix2fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)static voidglProgramUniformMatrix2x3fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix2x3fvEXTstatic voidglProgramUniformMatrix2x3fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)static voidglProgramUniformMatrix2x4fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix2x4fvEXTstatic voidglProgramUniformMatrix2x4fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)static voidglProgramUniformMatrix3fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix3fvEXTstatic voidglProgramUniformMatrix3fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)static voidglProgramUniformMatrix3x2fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix3x2fvEXTstatic voidglProgramUniformMatrix3x2fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)static voidglProgramUniformMatrix3x4fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix3x4fvEXTstatic voidglProgramUniformMatrix3x4fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)static voidglProgramUniformMatrix4fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix4fvEXTstatic voidglProgramUniformMatrix4fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)static voidglProgramUniformMatrix4x2fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix4x2fvEXTstatic voidglProgramUniformMatrix4x2fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)static voidglProgramUniformMatrix4x3fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix4x3fvEXTstatic voidglProgramUniformMatrix4x3fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)static voidglUseProgramStagesEXT(int pipeline, int stages, int program)static voidglValidateProgramPipelineEXT(int pipeline)
-
-
-
Field Detail
-
GL_VERTEX_SHADER_BIT_EXT
public static final int GL_VERTEX_SHADER_BIT_EXT
Accepted bystagesparameter to UseProgramStagesEXT.- See Also:
- Constant Field Values
-
GL_FRAGMENT_SHADER_BIT_EXT
public static final int GL_FRAGMENT_SHADER_BIT_EXT
Accepted bystagesparameter to UseProgramStagesEXT.- See Also:
- Constant Field Values
-
GL_ALL_SHADER_BITS_EXT
public static final int GL_ALL_SHADER_BITS_EXT
Accepted bystagesparameter to UseProgramStagesEXT.- See Also:
- Constant Field Values
-
GL_PROGRAM_SEPARABLE_EXT
public static final int GL_PROGRAM_SEPARABLE_EXT
Accepted by thepnameparameter of ProgramParameteriEXT and GetProgramiv.- See Also:
- Constant Field Values
-
GL_ACTIVE_PROGRAM_EXT
public static final int GL_ACTIVE_PROGRAM_EXT
Accepted bytypeparameter to GetProgramPipelineivEXT.- See Also:
- Constant Field Values
-
GL_PROGRAM_PIPELINE_BINDING_EXT
public static final int GL_PROGRAM_PIPELINE_BINDING_EXT
Accepted by thepnameparameter of GetBooleanv, GetIntegerv, and GetFloatv.- See Also:
- Constant Field Values
-
-
Method Detail
-
glActiveShaderProgramEXT
public static void glActiveShaderProgramEXT(int pipeline, int program)
-
glBindProgramPipelineEXT
public static void glBindProgramPipelineEXT(int pipeline)
-
glCreateShaderProgramvEXT
public static int glCreateShaderProgramvEXT(int type, PointerBuffer strings)
-
glCreateShaderProgramvEXT
public static int glCreateShaderProgramvEXT(int type, java.lang.CharSequence... strings)
-
glCreateShaderProgramvEXT
public static int glCreateShaderProgramvEXT(int type, java.lang.CharSequence string)
-
glDeleteProgramPipelinesEXT
public static void glDeleteProgramPipelinesEXT(java.nio.IntBuffer pipelines)
-
glDeleteProgramPipelinesEXT
public static void glDeleteProgramPipelinesEXT(int pipeline)
-
glGenProgramPipelinesEXT
public static void glGenProgramPipelinesEXT(java.nio.IntBuffer pipelines)
-
glGenProgramPipelinesEXT
public static int glGenProgramPipelinesEXT()
-
glGetProgramPipelineInfoLogEXT
public static void glGetProgramPipelineInfoLogEXT(int pipeline, java.nio.IntBuffer length, java.nio.ByteBuffer infoLog)
-
glGetProgramPipelineInfoLogEXT
public static java.lang.String glGetProgramPipelineInfoLogEXT(int pipeline, int bufSize)
-
glGetProgramPipelineInfoLogEXT
public static java.lang.String glGetProgramPipelineInfoLogEXT(int pipeline)
-
glGetProgramPipelineivEXT
public static void glGetProgramPipelineivEXT(int pipeline, int pname, java.nio.IntBuffer params)
-
glGetProgramPipelineiEXT
public static int glGetProgramPipelineiEXT(int pipeline, int pname)
-
glIsProgramPipelineEXT
public static boolean glIsProgramPipelineEXT(int pipeline)
-
glProgramParameteriEXT
public static void glProgramParameteriEXT(int program, int pname, int value)
-
glProgramUniform1fEXT
public static void glProgramUniform1fEXT(int program, int location, float v0)
-
glProgramUniform1fvEXT
public static void glProgramUniform1fvEXT(int program, int location, java.nio.FloatBuffer value)
-
glProgramUniform1iEXT
public static void glProgramUniform1iEXT(int program, int location, int v0)
-
glProgramUniform1ivEXT
public static void glProgramUniform1ivEXT(int program, int location, java.nio.IntBuffer value)
-
glProgramUniform2fEXT
public static void glProgramUniform2fEXT(int program, int location, float v0, float v1)
-
glProgramUniform2fvEXT
public static void glProgramUniform2fvEXT(int program, int location, java.nio.FloatBuffer value)
-
glProgramUniform2iEXT
public static void glProgramUniform2iEXT(int program, int location, int v0, int v1)
-
glProgramUniform2ivEXT
public static void glProgramUniform2ivEXT(int program, int location, java.nio.IntBuffer value)
-
glProgramUniform3fEXT
public static void glProgramUniform3fEXT(int program, int location, float v0, float v1, float v2)
-
glProgramUniform3fvEXT
public static void glProgramUniform3fvEXT(int program, int location, java.nio.FloatBuffer value)
-
glProgramUniform3iEXT
public static void glProgramUniform3iEXT(int program, int location, int v0, int v1, int v2)
-
glProgramUniform3ivEXT
public static void glProgramUniform3ivEXT(int program, int location, java.nio.IntBuffer value)
-
glProgramUniform4fEXT
public static void glProgramUniform4fEXT(int program, int location, float v0, float v1, float v2, float v3)
-
glProgramUniform4fvEXT
public static void glProgramUniform4fvEXT(int program, int location, java.nio.FloatBuffer value)
-
glProgramUniform4iEXT
public static void glProgramUniform4iEXT(int program, int location, int v0, int v1, int v2, int v3)
-
glProgramUniform4ivEXT
public static void glProgramUniform4ivEXT(int program, int location, java.nio.IntBuffer value)
-
glProgramUniformMatrix2fvEXT
public static void glProgramUniformMatrix2fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)
-
glProgramUniformMatrix3fvEXT
public static void glProgramUniformMatrix3fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)
-
glProgramUniformMatrix4fvEXT
public static void glProgramUniformMatrix4fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)
-
glUseProgramStagesEXT
public static void glUseProgramStagesEXT(int pipeline, int stages, int program)
-
glValidateProgramPipelineEXT
public static void glValidateProgramPipelineEXT(int pipeline)
-
glProgramUniform1uiEXT
public static void glProgramUniform1uiEXT(int program, int location, int v0)
-
glProgramUniform2uiEXT
public static void glProgramUniform2uiEXT(int program, int location, int v0, int v1)
-
glProgramUniform3uiEXT
public static void glProgramUniform3uiEXT(int program, int location, int v0, int v1, int v2)
-
glProgramUniform4uiEXT
public static void glProgramUniform4uiEXT(int program, int location, int v0, int v1, int v2, int v3)
-
glProgramUniform1uivEXT
public static void glProgramUniform1uivEXT(int program, int location, java.nio.IntBuffer value)
-
glProgramUniform2uivEXT
public static void glProgramUniform2uivEXT(int program, int location, java.nio.IntBuffer value)
-
glProgramUniform3uivEXT
public static void glProgramUniform3uivEXT(int program, int location, java.nio.IntBuffer value)
-
glProgramUniform4uivEXT
public static void glProgramUniform4uivEXT(int program, int location, java.nio.IntBuffer value)
-
glProgramUniformMatrix2x3fvEXT
public static void glProgramUniformMatrix2x3fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)
-
glProgramUniformMatrix3x2fvEXT
public static void glProgramUniformMatrix3x2fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)
-
glProgramUniformMatrix2x4fvEXT
public static void glProgramUniformMatrix2x4fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)
-
glProgramUniformMatrix4x2fvEXT
public static void glProgramUniformMatrix4x2fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)
-
glProgramUniformMatrix3x4fvEXT
public static void glProgramUniformMatrix3x4fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)
-
glProgramUniformMatrix4x3fvEXT
public static void glProgramUniformMatrix4x3fvEXT(int program, int location, boolean transpose, java.nio.FloatBuffer value)
-
glDeleteProgramPipelinesEXT
public static void glDeleteProgramPipelinesEXT(int[] pipelines)
Array version of:DeleteProgramPipelinesEXT
-
glGenProgramPipelinesEXT
public static void glGenProgramPipelinesEXT(int[] pipelines)
Array version of:GenProgramPipelinesEXT
-
glGetProgramPipelineInfoLogEXT
public static void glGetProgramPipelineInfoLogEXT(int pipeline, int[] length, java.nio.ByteBuffer infoLog)Array version of:GetProgramPipelineInfoLogEXT
-
glGetProgramPipelineivEXT
public static void glGetProgramPipelineivEXT(int pipeline, int pname, int[] params)Array version of:GetProgramPipelineivEXT
-
glProgramUniform1fvEXT
public static void glProgramUniform1fvEXT(int program, int location, float[] value)Array version of:ProgramUniform1fvEXT
-
glProgramUniform1ivEXT
public static void glProgramUniform1ivEXT(int program, int location, int[] value)Array version of:ProgramUniform1ivEXT
-
glProgramUniform2fvEXT
public static void glProgramUniform2fvEXT(int program, int location, float[] value)Array version of:ProgramUniform2fvEXT
-
glProgramUniform2ivEXT
public static void glProgramUniform2ivEXT(int program, int location, int[] value)Array version of:ProgramUniform2ivEXT
-
glProgramUniform3fvEXT
public static void glProgramUniform3fvEXT(int program, int location, float[] value)Array version of:ProgramUniform3fvEXT
-
glProgramUniform3ivEXT
public static void glProgramUniform3ivEXT(int program, int location, int[] value)Array version of:ProgramUniform3ivEXT
-
glProgramUniform4fvEXT
public static void glProgramUniform4fvEXT(int program, int location, float[] value)Array version of:ProgramUniform4fvEXT
-
glProgramUniform4ivEXT
public static void glProgramUniform4ivEXT(int program, int location, int[] value)Array version of:ProgramUniform4ivEXT
-
glProgramUniformMatrix2fvEXT
public static void glProgramUniformMatrix2fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix2fvEXT
-
glProgramUniformMatrix3fvEXT
public static void glProgramUniformMatrix3fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix3fvEXT
-
glProgramUniformMatrix4fvEXT
public static void glProgramUniformMatrix4fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix4fvEXT
-
glProgramUniform1uivEXT
public static void glProgramUniform1uivEXT(int program, int location, int[] value)Array version of:ProgramUniform1uivEXT
-
glProgramUniform2uivEXT
public static void glProgramUniform2uivEXT(int program, int location, int[] value)Array version of:ProgramUniform2uivEXT
-
glProgramUniform3uivEXT
public static void glProgramUniform3uivEXT(int program, int location, int[] value)Array version of:ProgramUniform3uivEXT
-
glProgramUniform4uivEXT
public static void glProgramUniform4uivEXT(int program, int location, int[] value)Array version of:ProgramUniform4uivEXT
-
glProgramUniformMatrix2x3fvEXT
public static void glProgramUniformMatrix2x3fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix2x3fvEXT
-
glProgramUniformMatrix3x2fvEXT
public static void glProgramUniformMatrix3x2fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix3x2fvEXT
-
glProgramUniformMatrix2x4fvEXT
public static void glProgramUniformMatrix2x4fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix2x4fvEXT
-
glProgramUniformMatrix4x2fvEXT
public static void glProgramUniformMatrix4x2fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix4x2fvEXT
-
glProgramUniformMatrix3x4fvEXT
public static void glProgramUniformMatrix3x4fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix3x4fvEXT
-
glProgramUniformMatrix4x3fvEXT
public static void glProgramUniformMatrix4x3fvEXT(int program, int location, boolean transpose, float[] value)Array version of:ProgramUniformMatrix4x3fvEXT
-
-