List of usage examples for org.lwjgl.opengl GL20 glGetProgrami
@NativeType("void") public static int glGetProgrami(@NativeType("GLuint") int program, @NativeType("GLenum") int pname)
From source file:com.samrj.devil.gl.ShaderProgram.java
License:Open Source License
private void checkStatus(int type) { if (GL20.glGetProgrami(id, type) != GL11.GL_TRUE) { int logLength = GL20.glGetProgrami(id, GL20.GL_INFO_LOG_LENGTH); String log = GL20.glGetProgramInfoLog(id, logLength); throw new ShaderException(log); }//from ww w .j a v a2 s. com }
From source file:com.samrj.devil.gl.ShaderProgram.java
License:Open Source License
/** * Links this shader program, creating executables that may run on the GPU * and compiling a list of input attributes. * //from w ww . j av a 2s. c om * @return This shader program. */ public ShaderProgram link() { if (state != State.NEW) throw new IllegalStateException("Shader program must be new to link."); GL20.glLinkProgram(id); checkStatus(GL20.GL_LINK_STATUS); int numAttributes = GL20.glGetProgrami(id, GL20.GL_ACTIVE_ATTRIBUTES); ArrayList<Attribute> attList = new ArrayList<>(numAttributes); attMap = new HashMap<>(numAttributes); int attBytes = 4 + 4 + 4 + 32; long address = MemStack.push(attBytes); ByteBuffer buffer = MemoryUtil.memByteBuffer(address, attBytes); for (int index = 0; index < numAttributes; index++) { long nameAddress = address + 12; GL20.nglGetActiveAttrib(id, index, 31, address, address + 4, address + 8, nameAddress); buffer.rewind(); buffer.getInt(); int size = buffer.getInt(); int type = buffer.getInt(); String name = MemoryUtil.memASCII(nameAddress); int location = GL20.nglGetAttribLocation(id, nameAddress); Attribute att = new Attribute(name, type, size, location); attList.add(att); attMap.put(name, att); } MemStack.pop(); attributes = Collections.unmodifiableList(attList); state = State.LINKED; return this; }
From source file:com.wicpar.sinkingsimulatorclassic.graphics.ShaderProgram.java
License:Open Source License
public ShaderProgram setShaders(Shader... shaders) { if (ID == null) create();/*ww w .ja va 2 s . com*/ 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();/*from ww w . java 2 s. c o m*/ 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); }/* w w w .ja va2s . 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 void validateLinkage(int programId) { int linkStatus = GL20.glGetProgrami(programId, GL20.GL_LINK_STATUS); int error = GL11.glGetError(); if (error != GL11.GL_NO_ERROR) { ML.f(String.format("Error getting link status: 0x%x", error)); } else if (linkStatus == GL11.GL_FALSE) { int logLength = GL20.glGetProgrami(programId, GL20.GL_INFO_LOG_LENGTH); String log = GL20.glGetProgramInfoLog(programId, logLength); ML.f(String.format("Error linking program: %s", log)); }//from w ww .j a va 2 s .com }
From source file:de.ikosa.mars.viewer.glviewer.engine.GLShaderBuilder.java
License:Open Source License
private void validateLinkage(int programId) { int linkStatus = GL20.glGetProgrami(programId, GL20.GL_LINK_STATUS); int error = GL11.glGetError(); if (error != GL11.GL_NO_ERROR) { ML.f(String.format("Error getting link status: 0x%x", error)); } else if (linkStatus == GL11.GL_FALSE) { int logLength = GL20.glGetProgrami(programId, GL20.GL_INFO_LOG_LENGTH); String log = GL20.glGetProgramInfoLog(programId, logLength); ML.f(String.format("Error linking program: %s", log)); }// w w w . j a v a 2s . co m }
From source file:eu.over9000.veya.rendering.Program.java
License:Open Source License
private static void checkValidation(final int programID) { final int error = GL20.glGetProgrami(programID, GL20.GL_VALIDATE_STATUS); if (error == GL11.GL_FALSE) { throw new OpenGLException( GL20.glGetProgramInfoLog(programID, GL20.glGetProgrami(programID, GL20.GL_INFO_LOG_LENGTH))); } else {//from w w w . j av a 2 s. co m System.out.println("Shader Validation OK"); } }
From source file:eu.over9000.veya.rendering.Program.java
License:Open Source License
private static void checkLinkage(final int programID) { final int error = GL20.glGetProgrami(programID, GL20.GL_LINK_STATUS); if (error == GL11.GL_FALSE) { throw new OpenGLException( GL20.glGetProgramInfoLog(programID, GL20.glGetProgrami(programID, GL20.GL_INFO_LOG_LENGTH))); } else {/* w w w. j a v a 2 s .c o m*/ System.out.println("Shader Linkage OK"); } }
From source file:io.root.gfx.glutils.GL.java
License:Apache License
public static int glGetProgrami(int shaderProgram, int glLinkStatus) { return GL20.glGetProgrami(shaderProgram, glLinkStatus); }