List of usage examples for org.lwjgl.opengl ARBGetProgramBinary glProgramParameteri
public static void glProgramParameteri(@NativeType("GLuint") int program, @NativeType("GLenum") int pname, @NativeType("GLint") int value)
From source file:com.a2client.corex.Shader.java
License:Open Source License
public Shader(String name, List<String> defines) { String defstr = ""; for (String s : defines) defstr += s;/*from w w w . j a va 2 s . c o m*/ this.name = name + Const.EXT_SHADER + "*" + defstr; MyInputStream in = FileSys.getStream(name + Const.EXT_SHADER); Log.debug("load shader: " + name); Log.debug("defines: " + defines.toString()); String DEFINE = "#define"; String define_str = DEFINE; for (String s : defines) { define_str += " " + s + CRLF + DEFINE; } try { shaders.clear(); String source = readStreamAsString(in); // vertex String csource = define_str + " VERTEX" + CRLF + source; attach(ARBVertexShader.GL_VERTEX_SHADER_ARB, csource); // fragment csource = define_str + " FRAGMENT" + CRLF + source; attach(ARBFragmentShader.GL_FRAGMENT_SHADER_ARB, csource); // geometry if (source.contains("#ifdef GEOMETRY")) { csource = define_str + " GEOMETRY" + CRLF + source; attach(ARBGeometryShader4.GL_GEOMETRY_SHADER_ARB, csource); // may be need fix ARBGetProgramBinary.glProgramParameteri(ID, ARBGeometryShader4.GL_GEOMETRY_VERTICES_OUT_ARB, 3); ARBGetProgramBinary.glProgramParameteri(ID, ARBGeometryShader4.GL_GEOMETRY_INPUT_TYPE_ARB, GL11.GL_TRIANGLES); ARBGetProgramBinary.glProgramParameteri(ID, ARBGeometryShader4.GL_GEOMETRY_VERTICES_OUT_ARB, GL11.GL_TRIANGLE_STRIP); } ID = ARBShaderObjects.glCreateProgramObjectARB(); Log.debug("shader id: " + ID); for (int obj : shaders) { ARBShaderObjects.glAttachObjectARB(ID, obj); } ARBShaderObjects.glLinkProgramARB(ID); if (ARBShaderObjects.glGetObjectParameteriARB(ID, ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) { Log.error(getLogInfo(ID)); ID = 0; return; } ARBShaderObjects.glValidateProgramARB(ID); if (ARBShaderObjects.glGetObjectParameteriARB(ID, ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) { Log.error(getLogInfo(ID)); ID = 0; } } catch (Exception e) { e.printStackTrace(); } }