package TaiGameCore.deprecated; import javax.media.opengl.GL2; public class TaiShaders { /** * Pass null to go back to default gl shader */ public void switchToShader(TaiShaders other) { if (other == null) { gl.glDisable(gl.GL_VERTEX_PROGRAM_ARB); //Just disable. return; } gl.glEnable(gl.GL_VERTEX_PROGRAM_ARB); gl.glBindProgramARB(gl.GL_VERTEX_PROGRAM_ARB, shaders[0]); } private GL2 gl; public TaiShaders(GL2 gl) { this.gl = gl; } private int[] shaders; public void initFromStrings(String vertTxt) { //NOTE: fragment shaders not supported! Parram is ignored. gl.glEnable(gl.GL_VERTEX_PROGRAM_ARB); shaders = new int[1]; gl.glGenProgramsARB(1, shaders, 0); gl.glBindProgramARB(gl.GL_VERTEX_PROGRAM_ARB, shaders[0]); gl.glProgramStringARB(gl.GL_VERTEX_PROGRAM_ARB, gl.GL_PROGRAM_FORMAT_ASCII_ARB, vertTxt.length(), vertTxt); String programErrorString = gl .glGetString(gl.GL_PROGRAM_ERROR_STRING_ARB); int errorPos[] = new int[1]; gl.glGetIntegerv(gl.GL_PROGRAM_ERROR_POSITION_ARB, errorPos, 0); if (errorPos[0] != -1) System.err.println("VP Error:" + programErrorString); gl.glDisable(gl.GL_VERTEX_PROGRAM_ARB); } public void cleanup() { gl.glDeleteProgramsARB(1, shaders, 0); } }