List of usage examples for org.lwjgl.opengl GL20 glLinkProgram
public static void glLinkProgram(@NativeType("GLuint") int program)
From source file:com.voxelplugineering.voxelsniper.render.RenderMain.java
License:Open Source License
private void setupShaders() { // Load the vertex shader int vsId = GLSLUtilities.loadShader("assets/shaders/vertex.glsl", GL20.GL_VERTEX_SHADER); // Load the fragment shader int fsId = GLSLUtilities.loadShader("assets/shaders/fragment.glsl", GL20.GL_FRAGMENT_SHADER); // Create a new shader program that links both shaders pId = GL20.glCreateProgram();// ww w . j a v a 2 s . co m GL20.glAttachShader(pId, vsId); GL20.glAttachShader(pId, fsId); GL20.glBindAttribLocation(pId, 0, "in_Position"); GL20.glBindAttribLocation(pId, 1, "in_Color"); GL20.glBindAttribLocation(pId, 2, "in_TextureCoord"); GL20.glLinkProgram(pId); GL20.glValidateProgram(pId); // Get matrices uniform locations projectionMatrixLocation = GL20.glGetUniformLocation(pId, "projectionMatrix"); viewMatrixLocation = GL20.glGetUniformLocation(pId, "viewMatrix"); modelMatrixLocation = GL20.glGetUniformLocation(pId, "modelMatrix"); OpenGLUtilities.checkGLError("setupShaders"); }
From source file:com.wicpar.sinkingsimulatorclassic.graphics.ShaderProgram.java
License:Open Source License
public ShaderProgram setShaders(Shader... shaders) { if (ID == null) create();//from w ww .j a va 2 s .co m if (this.shaders.size() != 0) { for (Shader shader : this.shaders) { GL20.glDetachShader(ID, shader.getID()); } this.shaders.clear(); } for (Shader shader : shaders) { GL20.glAttachShader(ID, shader.getID()); } GL20.glLinkProgram(ID); if (GL20.glGetProgrami(ID, GL20.GL_LINK_STATUS) != GL11.GL_TRUE) { logger.error("failed to link program: \n" + GL20.glGetProgramInfoLog(ID)); } return this; }
From source file:com.xrbpowered.gl.res.shaders.Shader.java
License:Open Source License
public Shader(VertexInfo info, String pathVS, String pathFS) { // System.out.println("Compile: "+pathVS+", "+pathFS); this.info = info; int vsId = loadShader(pathVS, GL20.GL_VERTEX_SHADER); int fsId = loadShader(pathFS, GL20.GL_FRAGMENT_SHADER); pId = GL20.glCreateProgram();// www. j a v a 2 s .com if (vsId > 0) GL20.glAttachShader(pId, vsId); if (fsId > 0) GL20.glAttachShader(pId, fsId); bindAttribLocations(); // System.out.println("Link: "+pathVS+", "+pathFS); GL20.glLinkProgram(pId); if (GL20.glGetProgrami(pId, GL20.GL_LINK_STATUS) == GL11.GL_FALSE) { System.err.println("Could not link program " + pathVS + ", " + pathFS); System.err.println(GL20.glGetProgramInfoLog(pId, 8000)); System.exit(-1); } GL20.glValidateProgram(pId); storeUniformLocations(); Client.checkError(); // System.out.println("Done: "+pathVS+", "+pathFS+"\n"); }
From source file:cuchaz.jfxgl.prism.JFXGLContext.java
License:Open Source License
@Override public int createProgram(int vertexShaderId, int[] fragmentShaderIds, String[] attrs, int[] indices) { // build the shader program int id = GL20.glCreateProgram(); GL20.glAttachShader(id, vertexShaderId); for (int fragmentShaderId : fragmentShaderIds) { GL20.glAttachShader(id, fragmentShaderId); }/*from w w w. ja va 2 s . c o m*/ assert (attrs.length == indices.length); for (int i = 0; i < attrs.length; i++) { GL20.glBindAttribLocation(id, indices[i], attrs[i]); } GL20.glLinkProgram(id); boolean isSuccess = GL20.glGetProgrami(id, GL20.GL_LINK_STATUS) == GL11.GL_TRUE; if (!isSuccess) { throw new RuntimeException("Shader program did not link:\n" + GL20.glGetProgramInfoLog(id, 4096)); } GL20.glValidateProgram(id); isSuccess = GL20.glGetProgrami(id, GL20.GL_VALIDATE_STATUS) == GL11.GL_TRUE; if (!isSuccess) { throw new RuntimeException("Shader program did not validate:\n" + GL20.glGetProgramInfoLog(id, 4096)); } return id; }
From source file:de.ikosa.mars.viewer.glviewer.engine.GLHardcodedShader.java
License:Open Source License
private static GLShader createTexturedShader() { int vertexShaderId = compileShader(texturedVertexShaderSource, GL20.GL_VERTEX_SHADER); int fragmentShaderId = compileShader(texturedFragmentShaderSource, GL20.GL_FRAGMENT_SHADER); int programId = GL20.glCreateProgram(); GL20.glAttachShader(programId, vertexShaderId); GL20.glAttachShader(programId, fragmentShaderId); // Bind Attrib Location... GL20.glBindAttribLocation(programId, 0, "in_Position"); GL20.glBindAttribLocation(programId, 1, "in_Normal"); GL20.glBindAttribLocation(programId, 2, "in_TexCoord"); GL20.glLinkProgram(programId); validateLinkage(programId);//from w w w .j av a 2s .c om GL20.glValidateProgram(programId); return new GLShader(programId, vertexShaderId, fragmentShaderId); }
From source file:de.ikosa.mars.viewer.glviewer.engine.GLHardcodedShader.java
License:Open Source License
private static GLShader createFlatShader() { int vertexShaderId = compileShader(flatVertexShaderSource, GL20.GL_VERTEX_SHADER); int fragmentShaderId = compileShader(flatFragmentShaderSource, GL20.GL_FRAGMENT_SHADER); int programId = GL20.glCreateProgram(); GL20.glAttachShader(programId, vertexShaderId); GL20.glAttachShader(programId, fragmentShaderId); // Bind Attrib Location... GL20.glBindAttribLocation(programId, 0, "in_Position"); GL20.glBindAttribLocation(programId, 1, "in_Normal"); GL20.glLinkProgram(programId); validateLinkage(programId);// w w w .j av a2 s. c o m GL20.glValidateProgram(programId); return new GLShader(programId, vertexShaderId, fragmentShaderId); }
From source file:de.ikosa.mars.viewer.glviewer.engine.GLShaderBuilder.java
License:Open Source License
public GLShader createShader(GLResources resourceManager) { int vertexShaderId = compileShader(vertexSource, GL20.GL_VERTEX_SHADER); int fragmentShaderId = compileShader(fragmentSource, GL20.GL_FRAGMENT_SHADER); int programId = GL20.glCreateProgram(); GL20.glAttachShader(programId, vertexShaderId); GL20.glAttachShader(programId, fragmentShaderId); // Bind attribute locations GL20.glBindAttribLocation(programId, 0, "in_Position"); if (vertexSource.contains("in_Normal")) GL20.glBindAttribLocation(programId, 1, "in_Normal"); if (vertexSource.contains("in_TexCoord")) GL20.glBindAttribLocation(programId, 2, "in_TexCoord"); GL20.glLinkProgram(programId); validateLinkage(programId);//from www . j a v a2 s . com GL20.glValidateProgram(programId); return new GLShader(programId, vertexShaderId, fragmentShaderId); }
From source file:eu.over9000.veya.rendering.Program.java
License:Open Source License
public Program(final String shaderName, final String[] uniformNames) { final int vsID = Program.loadShader( Program.class.getResourceAsStream("/shaders/" + shaderName + "/vertex.glsl"), GL20.GL_VERTEX_SHADER);// w w w. ja v a 2 s .c o m final int fsID = Program.loadShader( Program.class.getResourceAsStream("/shaders/" + shaderName + "/fragment.glsl"), GL20.GL_FRAGMENT_SHADER); this.id = GL20.glCreateProgram(); GL20.glAttachShader(this.id, vsID); GL20.glAttachShader(this.id, fsID); GL20.glLinkProgram(this.id); Program.checkLinkage(this.id); //GL20.glValidateProgram(this.id); //Program.checkValidation(this.id); GL20.glDetachShader(this.id, vsID); GL20.glDetachShader(this.id, fsID); GL20.glDeleteShader(vsID); GL20.glDeleteShader(fsID); this.uniformLocations = new HashMap<>(uniformNames.length + 1, 1); for (final String name : uniformNames) { final int loc = GL20.glGetUniformLocation(this.id, name); this.uniformLocations.put(name, loc); System.out.println("UniformLoc for " + name + "=" + loc); } Util.checkGLError(); }
From source file:fr.guillaume.prive.viper.core.graphic.GraphicMotor.java
private static void setupShaders() { int vsId = GraphicMotor.loadShader("resources/shader/ship.vert", GL20.GL_VERTEX_SHADER); int fsId = GraphicMotor.loadShader("resources/shader/ship.frag", GL20.GL_FRAGMENT_SHADER); instance.shipShaderId = GL20.glCreateProgram(); GL20.glAttachShader(instance.shipShaderId, vsId); GL20.glAttachShader(instance.shipShaderId, fsId); GL20.glBindAttribLocation(instance.shipShaderId, 0, "in_Position"); GL20.glBindAttribLocation(instance.shipShaderId, 1, "Normal"); GL20.glBindAttribLocation(instance.shipShaderId, 2, "in_Color"); GL20.glBindAttribLocation(instance.shipShaderId, 3, "in_TextureCoord"); GL20.glLinkProgram(instance.shipShaderId); GL20.glValidateProgram(instance.shipShaderId); instance.projectionMatrixLocation = GL20.glGetUniformLocation(instance.shipShaderId, "projectionMatrix"); instance.viewMatrixLocation = GL20.glGetUniformLocation(instance.shipShaderId, "viewMatrix"); instance.modelMatrixLocation = GL20.glGetUniformLocation(instance.shipShaderId, "modelMatrix"); instance.useTextureLocation = GL20.glGetUniformLocation(instance.shipShaderId, "use_texture"); GraphicMotor.exitOnGLError("setupShaders"); }
From source file:io.root.gfx.glutils.GL.java
License:Apache License
public static void glLinkProgram(int program) { GL20.glLinkProgram(program); }