Example usage for org.lwjgl.opengl GL20 glGetProgrami

List of usage examples for org.lwjgl.opengl GL20 glGetProgrami

Introduction

In this page you can find the example usage for org.lwjgl.opengl GL20 glGetProgrami.

Prototype

@NativeType("void")
public static int glGetProgrami(@NativeType("GLuint") int program, @NativeType("GLenum") int pname) 

Source Link

Document

Returns a parameter from a program object.

Usage

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);
}