private static int createProgram(String vert, String frag) { int vertId = 0, fragId = 0, program; if(vert != null) vertId = createShader(vert, VERT); if(frag != null) fragId = createShader(frag, FRAG); program = ARBShaderObjects.glCreateProgramObjectARB(); if(program == 0) return 0; if(vert != null) ARBShaderObjects.glAttachObjectARB(program, vertId); if(frag != null) ARBShaderObjects.glAttachObjectARB(program, fragId); ARBShaderObjects.glLinkProgramARB(program); if(ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) { Botania.LOGGER.error(getLogInfo(program)); return 0; } ARBShaderObjects.glValidateProgramARB(program); if (ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) { Botania.LOGGER.error(getLogInfo(program)); return 0; } return program; }
@Override public void glAttachShader(int program, int shader) { ARBShaderObjects.glAttachObjectARB(program, shader); }
protected void compileShader() { System.out.println("Compiling shader ..."); final String vertexShader = vertexShader(); final String fragmentShader = fragmentShader(); System.out.println("Vertex shader:"); System.out.println(vertexShader); System.out.println("Fragment shader:"); System.out.println(fragmentShader); _vertexShaderId = ARBShaderObjects.glCreateShaderObjectARB(ARBVertexShader.GL_VERTEX_SHADER_ARB); ARBShaderObjects.glShaderSourceARB(_vertexShaderId, vertexShader); ARBShaderObjects.glCompileShaderARB(_vertexShaderId); System.out.println("VertexShader Info: "+ARBShaderObjects.glGetInfoLogARB(_vertexShaderId, 8192)); _fragmentShaderId = ARBShaderObjects.glCreateShaderObjectARB(ARBFragmentShader.GL_FRAGMENT_SHADER_ARB); ARBShaderObjects.glShaderSourceARB(_fragmentShaderId, fragmentShader); ARBShaderObjects.glCompileShaderARB(_fragmentShaderId); System.out.println("FragmentShader Info: "+ARBShaderObjects.glGetInfoLogARB(_fragmentShaderId, 8192)); _programId = ARBShaderObjects.glCreateProgramObjectARB(); ARBShaderObjects.glAttachObjectARB(_programId, _vertexShaderId); ARBShaderObjects.glAttachObjectARB(_programId, _fragmentShaderId); ARBShaderObjects.glLinkProgramARB(_programId); System.out.println("Program Info: "+ARBShaderObjects.glGetInfoLogARB(_programId, 8192)); } }
ARBShaderObjects.glAttachObjectARB(program, vertId); ARBShaderObjects.glAttachObjectARB(program, fragId);
private static int createProgram(String vert, String frag) { int vertId = 0, fragId = 0, program; if(vert != null) vertId = createShader(vert, VERT_ST); if(frag != null) fragId = createShader(frag, FRAG_ST); program = ARBShaderObjects.glCreateProgramObjectARB(); if(program == 0) return 0; if(vert != null) ARBShaderObjects.glAttachObjectARB(program, vertId); if(frag != null) ARBShaderObjects.glAttachObjectARB(program, fragId); ARBShaderObjects.glLinkProgramARB(program); if(ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) { Psi.logger.log(Level.ERROR, getLogInfo(program)); return 0; } ARBShaderObjects.glValidateProgramARB(program); if (ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) { Psi.logger.log(Level.ERROR, getLogInfo(program)); return 0; } return program; }
private static int createProgram(String vert, String frag) { int vertId = 0, fragId = 0, program = 0; if (vert != null) vertId = createShader(vert, VERT_ST); if (frag != null) fragId = createShader(frag, FRAG_ST); program = ARBShaderObjects.glCreateProgramObjectARB(); if (program == 0) return 0; if (vert != null) ARBShaderObjects.glAttachObjectARB(program, vertId); if (frag != null) ARBShaderObjects.glAttachObjectARB(program, fragId); ARBShaderObjects.glLinkProgramARB(program); if (ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) { FMLLog.log(Level.ERROR, getLogInfo(program)); return 0; } ARBShaderObjects.glValidateProgramARB(program); if (ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) { FMLLog.log(Level.ERROR, getLogInfo(program)); return 0; } return program; }
ARBShaderObjects.glAttachObjectARB(state._programID, state._vertexShaderID); } else if (state._vertexShaderID != -1) { removeVertShader(state); ARBShaderObjects.glAttachObjectARB(state._programID, state._fragmentShaderID); } else if (state._fragmentShaderID != -1) { removeFragShader(state); ARBShaderObjects.glAttachObjectARB(state._programID, state._geometryShaderID); } else if (state._geometryShaderID != -1) { removeGeomShader(state); ARBShaderObjects.glAttachObjectARB(state._programID, state._tessellationControlShaderID); } else if (state._tessellationControlShaderID != -1) { removeTessControlShader(state); ARBShaderObjects.glAttachObjectARB(state._programID, state._tessellationEvaluationShaderID); } else if (state._tessellationEvaluationShaderID != -1) { removeTessEvalShader(state);