1 /* 2 * Copyright (c) 2002-2008 LWJGL Project 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: 8 * 9 * * Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * * Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * * Neither the name of 'LWJGL' nor the names of 17 * its contributors may be used to endorse or promote products derived 18 * from this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 28 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 29 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 package org.lwjgl.opengles; 33 34 import org.lwjgl.util.generator.*; 35 import org.lwjgl.util.generator.opengl.*; 36 37 import java.nio.ByteBuffer; 38 import java.nio.FloatBuffer; 39 import java.nio.IntBuffer; 40 41 public interface EXT_separate_shader_objects { 42 43 /** Accepted by <stages> parameter to UseProgramStagesEXT: */ 44 int GL_VERTEX_SHADER_BIT_EXT = 0x00000001, 45 GL_FRAGMENT_SHADER_BIT_EXT = 0x00000002, 46 GL_ALL_SHADER_BITS_EXT = 0xFFFFFFFF; 47 48 /** 49 * Accepted by the <pname> parameter of ProgramParameteriEXT and 50 * GetProgramiv: 51 */ 52 int GL_PROGRAM_SEPARABLE_EXT = 0x8258; 53 54 /** Accepted by <type> parameter to GetProgramPipelineivEXT: */ 55 int GL_ACTIVE_PROGRAM_EXT = 0x8259; 56 57 /** 58 * Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, and 59 * GetFloatv: 60 */ 61 int GL_PROGRAM_PIPELINE_BINDING_EXT = 0x825A; 62 glUseProgramStagesEXT(@Luint int pipeline, @GLbitfield int stages, @GLuint int program)63 void glUseProgramStagesEXT(@GLuint int pipeline, @GLbitfield int stages, @GLuint int program); 64 glActiveShaderProgramEXT(@Luint int pipeline, @GLuint int program)65 void glActiveShaderProgramEXT(@GLuint int pipeline, @GLuint int program); 66 67 /** Single null-terminated source code string. */ 68 @StripPostfix(value = "string", hasPostfix = false) 69 @GLuint glCreateShaderProgramvEXT(@Lenum int type, @Constant(R) @GLsizei int count, @NullTerminated @Check @Const @Indirect @GLchar ByteBuffer string)70 int glCreateShaderProgramvEXT(@GLenum int type, @Constant("1") @GLsizei int count, @NullTerminated @Check @Const @Indirect @GLchar ByteBuffer string); 71 72 /** Multiple null-terminated source code strings, one after the other. */ 73 @Alternate(value = "glCreateShaderProgramvEXT", nativeAlt = true) 74 @StripPostfix(value = "strings", hasPostfix = false) 75 @GLuint glCreateShaderProgramvEXT2(@Lenum int type, @GLsizei int count, @NullTerminated(R) @Check @Const @Indirect @GLchar @PointerArray(R) ByteBuffer strings)76 int glCreateShaderProgramvEXT2(@GLenum int type, @GLsizei int count, @NullTerminated("count") @Check @Const @Indirect @GLchar @PointerArray("count") ByteBuffer strings); 77 78 @Alternate(value = "glCreateShaderProgramvEXT", nativeAlt = true) 79 @StripPostfix(value = "strings", hasPostfix = false) 80 @GLuint glCreateShaderProgramvEXT3(@Lenum int type, @Constant(R) @GLsizei int count, @NullTerminated @Check(R) @PointerArray(value = R) @Const @NativeType(R) ByteBuffer[] strings)81 int glCreateShaderProgramvEXT3(@GLenum int type, @Constant("strings.length") @GLsizei int count, @NullTerminated @Check("1") @PointerArray(value = "count") @Const @NativeType("GLchar") ByteBuffer[] strings); 82 83 @Alternate("glCreateShaderProgramvEXT") 84 @StripPostfix(value = "string", hasPostfix = false) 85 @GLuint glCreateShaderProgramvEXT(@Lenum int type, @Constant(R) @GLsizei int count, @NullTerminated CharSequence string)86 int glCreateShaderProgramvEXT(@GLenum int type, @Constant("1") @GLsizei int count, @NullTerminated CharSequence string); 87 88 @Alternate(value = "glCreateShaderProgramvEXT", nativeAlt = true, skipNative = true) 89 @StripPostfix(value = "strings", hasPostfix = false) 90 @GLuint glCreateShaderProgramvEXT2(@Lenum int type, @Constant(R) @GLsizei int count, @Const @NullTerminated @PointerArray(value = R) CharSequence[] strings)91 int glCreateShaderProgramvEXT2(@GLenum int type, @Constant("strings.length") @GLsizei int count, 92 @Const @NullTerminated @PointerArray(value = "count") CharSequence[] strings); 93 glBindProgramPipelineEXT(@Luint int pipeline)94 void glBindProgramPipelineEXT(@GLuint int pipeline); 95 glDeleteProgramPipelinesEXT(@utoSizeR) @Lsizei int n, @Const @GLuint IntBuffer pipelines)96 void glDeleteProgramPipelinesEXT(@AutoSize("pipelines") @GLsizei int n, @Const @GLuint IntBuffer pipelines); 97 98 @Alternate("glDeleteProgramPipelinesEXT") glDeleteProgramPipelinesEXT(@onstantR) @Lsizei int n, @Constant(value = R, keepParam = true) int pipeline)99 void glDeleteProgramPipelinesEXT(@Constant("1") @GLsizei int n, @Constant(value = "APIUtil.getInt(pipeline)", keepParam = true) int pipeline); 100 glGenProgramPipelinesEXT(@utoSizeR) @Lsizei int n, @OutParameter @GLuint IntBuffer pipelines)101 void glGenProgramPipelinesEXT(@AutoSize("pipelines") @GLsizei int n, @OutParameter @GLuint IntBuffer pipelines); 102 103 @Alternate("glGenProgramPipelinesEXT") 104 @GLreturn("pipelines") glGenProgramPipelinesEXT2(@onstantR) @Lsizei int n, @OutParameter @GLuint IntBuffer pipelines)105 void glGenProgramPipelinesEXT2(@Constant("1") @GLsizei int n, @OutParameter @GLuint IntBuffer pipelines); 106 glIsProgramPipelineEXT(@Luint int pipeline)107 boolean glIsProgramPipelineEXT(@GLuint int pipeline); 108 glProgramParameteriEXT(@Luint int program, @GLenum int pname, int value)109 void glProgramParameteriEXT(@GLuint int program, @GLenum int pname, int value); 110 111 @StripPostfix("params") glGetProgramPipelineivEXT(@Luint int pipeline, @GLenum int pname, @OutParameter @Check(R) IntBuffer params)112 void glGetProgramPipelineivEXT(@GLuint int pipeline, @GLenum int pname, @OutParameter @Check("1") IntBuffer params); 113 114 @Alternate("glGetProgramPipelineivEXT") 115 @GLreturn("params") 116 @StripPostfix(value = "params", hasPostfix = false) glGetProgramPipelineivEXT2(@Luint int pipeline, @GLenum int pname, @OutParameter IntBuffer params)117 void glGetProgramPipelineivEXT2(@GLuint int pipeline, @GLenum int pname, @OutParameter IntBuffer params); 118 glProgramUniform1iEXT(@Luint int program, int location, int v0)119 void glProgramUniform1iEXT(@GLuint int program, int location, int v0); 120 glProgramUniform2iEXT(@Luint int program, int location, int v0, int v1)121 void glProgramUniform2iEXT(@GLuint int program, int location, int v0, int v1); 122 glProgramUniform3iEXT(@Luint int program, int location, int v0, int v1, int v2)123 void glProgramUniform3iEXT(@GLuint int program, int location, int v0, int v1, int v2); 124 glProgramUniform4iEXT(@Luint int program, int location, int v0, int v1, int v2, int v3)125 void glProgramUniform4iEXT(@GLuint int program, int location, int v0, int v1, int v2, int v3); 126 glProgramUniform1fEXT(@Luint int program, int location, float v0)127 void glProgramUniform1fEXT(@GLuint int program, int location, float v0); 128 glProgramUniform2fEXT(@Luint int program, int location, float v0, float v1)129 void glProgramUniform2fEXT(@GLuint int program, int location, float v0, float v1); 130 glProgramUniform3fEXT(@Luint int program, int location, float v0, float v1, float v2)131 void glProgramUniform3fEXT(@GLuint int program, int location, float v0, float v1, float v2); 132 glProgramUniform4fEXT(@Luint int program, int location, float v0, float v1, float v2, float v3)133 void glProgramUniform4fEXT(@GLuint int program, int location, float v0, float v1, float v2, float v3); 134 135 @StripPostfix("value") glProgramUniform1ivEXT(@Luint int program, int location, @AutoSize(R) @GLsizei int count, @Const IntBuffer value)136 void glProgramUniform1ivEXT(@GLuint int program, int location, @AutoSize("value") @GLsizei int count, @Const IntBuffer value); 137 138 @StripPostfix("value") glProgramUniform2ivEXT(@Luint int program, int location, @AutoSize(value = R, expression = R) @GLsizei int count, @Const IntBuffer value)139 void glProgramUniform2ivEXT(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 1") @GLsizei int count, @Const IntBuffer value); 140 141 @StripPostfix("value") glProgramUniform3ivEXT(@Luint int program, int location, @AutoSize(value = R, expression = R) @GLsizei int count, @Const IntBuffer value)142 void glProgramUniform3ivEXT(@GLuint int program, int location, @AutoSize(value = "value", expression = " / 3") @GLsizei int count, @Const IntBuffer value); 143 144 @StripPostfix("value") glProgramUniform4ivEXT(@Luint int program, int location, @AutoSize(value = R, expression = R) @GLsizei int count, @Const IntBuffer value)145 void glProgramUniform4ivEXT(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, @Const IntBuffer value); 146 147 @StripPostfix("value") glProgramUniform1fvEXT(@Luint int program, int location, @AutoSize(R) @GLsizei int count, @Const FloatBuffer value)148 void glProgramUniform1fvEXT(@GLuint int program, int location, @AutoSize("value") @GLsizei int count, @Const FloatBuffer value); 149 150 @StripPostfix("value") glProgramUniform2fvEXT(@Luint int program, int location, @AutoSize(value = R, expression = R) @GLsizei int count, @Const FloatBuffer value)151 void glProgramUniform2fvEXT(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 1") @GLsizei int count, @Const FloatBuffer value); 152 153 @StripPostfix("value") glProgramUniform3fvEXT(@Luint int program, int location, @AutoSize(value = R, expression = R) @GLsizei int count, @Const FloatBuffer value)154 void glProgramUniform3fvEXT(@GLuint int program, int location, @AutoSize(value = "value", expression = " / 3") @GLsizei int count, @Const FloatBuffer value); 155 156 @StripPostfix("value") glProgramUniform4fvEXT(@Luint int program, int location, @AutoSize(value = R, expression = R) @GLsizei int count, @Const FloatBuffer value)157 void glProgramUniform4fvEXT(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, @Const FloatBuffer value); 158 159 @StripPostfix("value") glProgramUniformMatrix2fvEXT(@Luint int program, int location, @AutoSize(value = R, expression = R) @GLsizei int count, boolean transpose, @Const FloatBuffer value)160 void glProgramUniformMatrix2fvEXT(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 2") @GLsizei int count, boolean transpose, @Const FloatBuffer value); 161 162 @StripPostfix("value") glProgramUniformMatrix3fvEXT(@Luint int program, int location, @AutoSize(value = R, expression = R) @GLsizei int count, boolean transpose, @Const FloatBuffer value)163 void glProgramUniformMatrix3fvEXT(@GLuint int program, int location, @AutoSize(value = "value", expression = " / (3 * 3)") @GLsizei int count, boolean transpose, @Const FloatBuffer value); 164 165 @StripPostfix("value") glProgramUniformMatrix4fvEXT(@Luint int program, int location, @AutoSize(value = R, expression = R) @GLsizei int count, boolean transpose, @Const FloatBuffer value)166 void glProgramUniformMatrix4fvEXT(@GLuint int program, int location, @AutoSize(value = "value", expression = " >> 4") @GLsizei int count, boolean transpose, @Const FloatBuffer value); 167 glValidateProgramPipelineEXT(@Luint int pipeline)168 void glValidateProgramPipelineEXT(@GLuint int pipeline); 169 glGetProgramPipelineInfoLogEXT(@Luint int pipeline, @AutoSize(R) @GLsizei int bufSize, @OutParameter @Check(value = R, canBeNull = true) @GLsizei IntBuffer length, @OutParameter @GLchar ByteBuffer infoLog)170 void glGetProgramPipelineInfoLogEXT(@GLuint int pipeline, @AutoSize("infoLog") @GLsizei int bufSize, 171 @OutParameter @Check(value = "1", canBeNull = true) @GLsizei IntBuffer length, 172 @OutParameter @GLchar ByteBuffer infoLog); 173 174 @Alternate("glGetProgramPipelineInfoLogEXT") 175 @GLreturn(value = "infoLog", maxLength = "bufSize") glGetProgramPipelineInfoLogEXT2(@Luint int pipeline, @GLsizei int bufSize, @OutParameter @GLsizei @Constant(R) IntBuffer length, @OutParameter @GLchar ByteBuffer infoLog)176 void glGetProgramPipelineInfoLogEXT2(@GLuint int pipeline, @GLsizei int bufSize, 177 @OutParameter @GLsizei @Constant("MemoryUtil.getAddress0(infoLog_length)") IntBuffer length, 178 @OutParameter @GLchar ByteBuffer infoLog); 179 180 }