List of usage examples for org.lwjgl.opengl ARBShaderObjects glAttachObjectARB
public static native void glAttachObjectARB(@NativeType("GLhandleARB") int containerObj, @NativeType("GLhandleARB") int obj);
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 ww w . ja v a2 s . c om 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(); } }
From source file:com.ardor3d.scene.state.lwjgl.LwjglShaderObjectsStateUtil.java
License:Open Source License
protected static void sendToGL(final GLSLShaderObjectsState state, final ContextCapabilities caps) { if (state.getVertexShader() == null && state.getFragmentShader() == null) { logger.warning("Could not find shader resources!" + "(both inputbuffers are null)"); state._needSendShader = false;//from w w w .j av a2s . c o m return; } if (state._programID == -1) { state._programID = ARBShaderObjects.glCreateProgramObjectARB(); } if (state.getVertexShader() != null) { if (state._vertexShaderID != -1) { removeVertShader(state); } state._vertexShaderID = ARBShaderObjects.glCreateShaderObjectARB(ARBVertexShader.GL_VERTEX_SHADER_ARB); // Create the sources ARBShaderObjects.glShaderSourceARB(state._vertexShaderID, state.getVertexShader()); // Compile the vertex shader final IntBuffer compiled = BufferUtils.createIntBuffer(1); ARBShaderObjects.glCompileShaderARB(state._vertexShaderID); ARBShaderObjects.glGetObjectParameterARB(state._vertexShaderID, ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB, compiled); checkProgramError(compiled, state._vertexShaderID, state._vertexShaderName); // Attach the program ARBShaderObjects.glAttachObjectARB(state._programID, state._vertexShaderID); } else if (state._vertexShaderID != -1) { removeVertShader(state); state._vertexShaderID = -1; } if (state.getFragmentShader() != null) { if (state._fragmentShaderID != -1) { removeFragShader(state); } state._fragmentShaderID = ARBShaderObjects .glCreateShaderObjectARB(ARBFragmentShader.GL_FRAGMENT_SHADER_ARB); // Create the sources ARBShaderObjects.glShaderSourceARB(state._fragmentShaderID, state.getFragmentShader()); // Compile the fragment shader final IntBuffer compiled = BufferUtils.createIntBuffer(1); ARBShaderObjects.glCompileShaderARB(state._fragmentShaderID); ARBShaderObjects.glGetObjectParameterARB(state._fragmentShaderID, ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB, compiled); checkProgramError(compiled, state._fragmentShaderID, state._fragmentShaderName); // Attach the program ARBShaderObjects.glAttachObjectARB(state._programID, state._fragmentShaderID); } else if (state._fragmentShaderID != -1) { removeFragShader(state); state._fragmentShaderID = -1; } if (caps.isGeometryShader4Supported()) { if (state.getGeometryShader() != null) { if (state._geometryShaderID != -1) { removeGeomShader(state); } state._geometryShaderID = ARBShaderObjects .glCreateShaderObjectARB(ARBGeometryShader4.GL_GEOMETRY_SHADER_ARB); // Create the sources ARBShaderObjects.glShaderSourceARB(state._geometryShaderID, state.getGeometryShader()); // Compile the fragment shader final IntBuffer compiled = BufferUtils.createIntBuffer(1); ARBShaderObjects.glCompileShaderARB(state._geometryShaderID); ARBShaderObjects.glGetObjectParameterARB(state._geometryShaderID, ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB, compiled); checkProgramError(compiled, state._geometryShaderID, state._geometryShaderName); // Attach the program ARBShaderObjects.glAttachObjectARB(state._programID, state._geometryShaderID); } else if (state._geometryShaderID != -1) { removeGeomShader(state); state._geometryShaderID = -1; } } if (caps.isTessellationShadersSupported()) { if (state.getTessellationControlShader() != null) { if (state._tessellationControlShaderID != -1) { removeTessControlShader(state); } state._tessellationControlShaderID = ARBShaderObjects .glCreateShaderObjectARB(ARBTessellationShader.GL_TESS_CONTROL_SHADER); // Create the sources ARBShaderObjects.glShaderSourceARB(state._tessellationControlShaderID, state.getTessellationControlShader()); // Compile the tessellation control shader final IntBuffer compiled = BufferUtils.createIntBuffer(1); ARBShaderObjects.glCompileShaderARB(state._tessellationControlShaderID); ARBShaderObjects.glGetObjectParameterARB(state._tessellationControlShaderID, ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB, compiled); checkProgramError(compiled, state._tessellationControlShaderID, state._tessellationControlShaderName); // Attach the program ARBShaderObjects.glAttachObjectARB(state._programID, state._tessellationControlShaderID); } else if (state._tessellationControlShaderID != -1) { removeTessControlShader(state); state._tessellationControlShaderID = -1; } if (state.getTessellationEvaluationShader() != null) { if (state._tessellationEvaluationShaderID != -1) { removeTessEvalShader(state); } state._tessellationEvaluationShaderID = ARBShaderObjects .glCreateShaderObjectARB(ARBTessellationShader.GL_TESS_CONTROL_SHADER); // Create the sources ARBShaderObjects.glShaderSourceARB(state._tessellationEvaluationShaderID, state.getTessellationEvaluationShader()); // Compile the tessellation control shader final IntBuffer compiled = BufferUtils.createIntBuffer(1); ARBShaderObjects.glCompileShaderARB(state._tessellationEvaluationShaderID); ARBShaderObjects.glGetObjectParameterARB(state._tessellationEvaluationShaderID, ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB, compiled); checkProgramError(compiled, state._tessellationEvaluationShaderID, state._tessellationEvaluationShaderName); // Attach the program ARBShaderObjects.glAttachObjectARB(state._programID, state._tessellationEvaluationShaderID); } else if (state._tessellationEvaluationShaderID != -1) { removeTessEvalShader(state); state._tessellationEvaluationShaderID = -1; } } ARBShaderObjects.glLinkProgramARB(state._programID); checkLinkError(state._programID); state.setNeedsRefresh(true); state._needSendShader = false; }
From source file:com.github.atomicblom.nullplayerexception.client.render.ShaderHelper.java
License:Open Source License
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) { Logger.severe(getLogInfo(program)); return 0; }/* www .j av a 2 s. co m*/ ARBShaderObjects.glValidateProgramARB(program); if (ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) { Logger.severe(getLogInfo(program)); return 0; } return program; }
From source file:com.runescape.client.revised.editor.modelviewer.Viewport.java
License:Open Source License
public boolean initShader() { int vertShader = 0, fragShader = 0; try {/*from ww w .j a v a2 s . co m*/ vertShader = this.createShader("./shaders/screen.vert", ARBVertexShader.GL_VERTEX_SHADER_ARB); fragShader = this.createShader("./shaders/screen.frag", ARBFragmentShader.GL_FRAGMENT_SHADER_ARB); } catch (final Exception exc) { exc.printStackTrace(); return false; } finally { if ((vertShader == 0) || (fragShader == 0)) { return false; } } this.program = ARBShaderObjects.glCreateProgramObjectARB(); if (this.program == 0) { return false; } ARBShaderObjects.glAttachObjectARB(this.program, vertShader); ARBShaderObjects.glAttachObjectARB(this.program, fragShader); ARBShaderObjects.glLinkProgramARB(this.program); if (ARBShaderObjects.glGetObjectParameteriARB(this.program, ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) { System.err.println(this.getLogInfo(this.program)); return false; } ARBShaderObjects.glValidateProgramARB(this.program); if (ARBShaderObjects.glGetObjectParameteriARB(this.program, ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) { System.err.println(this.getLogInfo(this.program)); return false; } return true; }
From source file:com.wuest.prefab.Structures.Render.ShaderHelper.java
License:Open Source License
private static int createProgram(String vert, String frag) { int vertId = 0, fragId = 0, program; if (vert != null) { vertId = createShader(vert, VERT); }/*from ww w .j av a 2s . co m*/ 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) { return 0; } ARBShaderObjects.glValidateProgramARB(program); if (ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) { return 0; } return program; }
From source file:de.sanandrew.mods.turretmod.client.util.ShaderHelper.java
License:Open Source License
private static int createProgram(ResourceLocation vert, ResourceLocation frag) { int vertId = 0; int fragId = 0; int program;//www . j av a 2s . c o m 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) { TmrConstants.LOG.log(Level.ERROR, getLogInfo(program)); return 0; } ARBShaderObjects.glValidateProgramARB(program); if (ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) { TmrConstants.LOG.log(Level.ERROR, getLogInfo(program)); return 0; } return program; }
From source file:elucent.roots.render.ShaderHandler.java
License:Open Source License
private static int createProgram(String vert, String frag) { int vertId = 0, fragId = 0; if (vert != null) vertId = createShader(vert, VERT_ST); if (frag != null) fragId = createShader(frag, FRAG_ST); int 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; }/* ww w . ja va 2 s . c om*/ 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; }
From source file:flash.display.Shader.java
License:Open Source License
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)); }
From source file:fox.spiteful.ridiculous.client.shaders.ShaderHelper.java
License:Creative Commons License
private static int createProgram(String vert, String frag) { int vertId = 0, fragId = 0, program = 0; 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) { FMLLog.log(Level.ERROR, getLogInfo(program)); return 0; }/*w w w. ja v a 2s .c o m*/ 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; }
From source file:game.map.Shader.java
public Shader() { int vertShader = 0, fragShader = 0; try {// www .j a v a2 s. c o m vertShader = createShader("src/Terrain/shaders/screen.vert", ARBVertexShader.GL_VERTEX_SHADER_ARB); fragShader = createShader("src/Terrain/shaders/screen.frag", ARBFragmentShader.GL_FRAGMENT_SHADER_ARB); } catch (Exception exc) { exc.printStackTrace(); return; } finally { if (vertShader == 0 || fragShader == 0) return; } program = ARBShaderObjects.glCreateProgramObjectARB(); if (program == 0) return; /* * if the vertex and fragment shaders setup sucessfully, * attach them to the shader program, link the sahder program * (into the GL context I suppose), and validate */ ARBShaderObjects.glAttachObjectARB(program, vertShader); ARBShaderObjects.glAttachObjectARB(program, fragShader); ARBShaderObjects.glLinkProgramARB(program); if (ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) { System.err.println(getLogInfo(program)); return; } ARBShaderObjects.glValidateProgramARB(program); if (ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) { System.err.println(getLogInfo(program)); return; } useShader = true; }