@Override public int glGetError() { return downstreamGL2ES2.glGetError(); } @Override
public static boolean createAndLoadShader(final GL _gl, final IntBuffer shader, final int shaderType, final int binFormat, final java.nio.Buffer bin, final PrintStream verboseOut) { final GL2ES2 gl = _gl.getGL2ES2(); int err = gl.glGetError(); // flush previous errors .. if(err!=GL.GL_NO_ERROR && null!=verboseOut) { verboseOut.println("createAndLoadShader: Pre GL Error: 0x"+Integer.toHexString(err)); } createShader(gl, shaderType, shader); err = gl.glGetError(); if(err!=GL.GL_NO_ERROR) { throw new GLException("createAndLoadShader: CreateShader failed, GL Error: 0x"+Integer.toHexString(err)); } shaderBinary(gl, shader, binFormat, bin); err = gl.glGetError(); if(err!=GL.GL_NO_ERROR && null!=verboseOut) { verboseOut.println("createAndLoadShader: ShaderBinary failed, GL Error: 0x"+Integer.toHexString(err)); } return err == GL.GL_NO_ERROR; }
public static boolean createAndCompileShader(final GL _gl, final IntBuffer shader, final int shaderType, final CharSequence[][] sources, final PrintStream verboseOut) { final GL2ES2 gl = _gl.getGL2ES2(); int err = gl.glGetError(); // flush previous errors .. if(err!=GL.GL_NO_ERROR && null!=verboseOut) { verboseOut.println("createAndCompileShader: Pre GL Error: 0x"+Integer.toHexString(err)); } createShader(gl, shaderType, shader); err = gl.glGetError(); if(err!=GL.GL_NO_ERROR) { throw new GLException("createAndCompileShader: CreateShader failed, GL Error: 0x"+Integer.toHexString(err)); } shaderSource(gl, shader, sources); err = gl.glGetError(); if(err!=GL.GL_NO_ERROR) { throw new GLException("createAndCompileShader: ShaderSource failed, GL Error: 0x"+Integer.toHexString(err)); } compileShader(gl, shader); err = gl.glGetError(); if(err!=GL.GL_NO_ERROR && null!=verboseOut) { verboseOut.println("createAndCompileShader: CompileShader failed, GL Error: 0x"+Integer.toHexString(err)); } return isShaderStatusValid(gl, shader, GL2ES2.GL_COMPILE_STATUS, verboseOut) && err == GL.GL_NO_ERROR; }
public Optional<ShaderProgramm> toShader(GraphicContext gc) { GL2ES2 gl = gc.getGL().getGL2(); int programObject = gl.glCreateProgram(); ShaderProgramm prog = new ShaderProgramm(gc, programObject); gl.glProgramBinary(prog.getPObject(), format, data, data.limit()); if (GL2ES2.GL_INVALID_ENUM == gl.glGetError()) { return Optional.absent(); } Optional<String> error = prog.verify(); if (error.isPresent()) { return Optional.of(prog); } else { return Optional.absent(); } }
final int[] param = new int[1]; gl.glGetIntegerv(GL2ES2.GL_NUM_SHADER_BINARY_FORMATS, param, 0); final int err = gl.glGetError(); final int numFormats = GL.GL_NO_ERROR == err ? param[0] : 0; if(numFormats>0) {
public static CompiledShader fromShader(GraphicContext gc, ShaderProgramm prog) { GL2ES2 gl = gc.getGL().getGL2ES2(); int pid = prog.getPObject(); IntBuffer length = Buffers.newDirectIntBuffer(1); gl.glGetProgramiv(pid, GL2.GL_PROGRAM_BINARY_RETRIEVABLE_HINT, length); if (length.get(0) == GL.GL_FALSE) { throw new RuntimeException("The binary of this shader program is not retrievable(set PROGRAM_BINARY_RETRIEVABLE_HINT to true)!"); } gl.glGetProgramiv(pid, GL2.GL_PROGRAM_BINARY_LENGTH, length); IntBuffer format = Buffers.newDirectIntBuffer(1); ByteBuffer data = Buffers.newDirectByteBuffer(length.get(0)); gl.glGetProgramBinary(pid, length.get(0), length, format, data); if (gl.glGetError() == GL.GL_INVALID_OPERATION) { //invalid state can occure when program isn't linked or the buffer is to smale throw new RuntimeException("The given shader program is not in a valid state(not linked correctly)"); } return new CompiledShader(format.get(0), data); }
final byte[] param = new byte[1]; gl.glGetBooleanv(GL2ES2.GL_SHADER_COMPILER, param, 0); final int err = gl.glGetError(); boolean v = GL.GL_NO_ERROR == err && param[0]!=(byte)0x00; if(!v) {