Example usage for org.lwjgl.opengl GL20 glValidateProgram

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

Introduction

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

Prototype

public static void glValidateProgram(@NativeType("GLuint") int program) 

Source Link

Document

Validates a program object.

Usage

From source file:vertigo.graphics.lwjgl.ShaderUtils.java

License:Open Source License

public static int attachShaders(String vertexCode, String fragmentCode) throws Exception {
    int vertexShaderProgram;
    int fragmentShaderProgram;
    int shaderprogram;
    String log = "";

    vertexShaderProgram = compileShader(vertexCode, GL20.GL_VERTEX_SHADER);
    fragmentShaderProgram = compileShader(fragmentCode, GL20.GL_FRAGMENT_SHADER);

    shaderprogram = GL20.glCreateProgram();
    GL20.glAttachShader(shaderprogram, vertexShaderProgram);
    GL20.glAttachShader(shaderprogram, fragmentShaderProgram);
    GL20.glLinkProgram(shaderprogram);/* w  w w . j a v  a 2s.c o  m*/

    //grab our info log
    String infoLog = GL20.glGetProgramInfoLog(shaderprogram,
            GL20.glGetProgrami(shaderprogram, GL20.GL_INFO_LOG_LENGTH));

    //if some log exists, append it 
    if (infoLog != null && infoLog.trim().length() != 0)
        log += infoLog;

    //if the link failed, throw some sort of exception
    if (GL20.glGetProgrami(shaderprogram, GL20.GL_LINK_STATUS) == GL11.GL_FALSE)
        throw new LWJGLException("Failure in linking program. Error log:\n" + infoLog);

    //detach and delete the shaders which are no longer needed
    GL20.glDetachShader(shaderprogram, vertexShaderProgram);
    GL20.glDetachShader(shaderprogram, fragmentShaderProgram);
    GL20.glDeleteShader(vertexShaderProgram);
    GL20.glDeleteShader(fragmentShaderProgram);

    GL20.glValidateProgram(shaderprogram);

    return shaderprogram;
}

From source file:vertigo.graphics.lwjgl.ShaderUtils.java

License:Open Source License

private static int attachVFShaders(ShaderProg prog) throws Exception {
    System.out.println("attachVFShader");

    int vertexShaderProgram;
    int fragmentShaderProgram;
    int shaderprogram;
    vertexShaderProgram = GL20.glCreateShader(GL20.GL_VERTEX_SHADER);
    fragmentShaderProgram = GL20.glCreateShader(GL20.GL_FRAGMENT_SHADER);

    GL20.glShaderSource(vertexShaderProgram, prog.getVertexSource());
    GL20.glCompileShader(vertexShaderProgram);
    if (GL20.glGetShaderi(vertexShaderProgram, GL20.GL_COMPILE_STATUS) == GL11.GL_FALSE) {
        System.err.println("Compile error of vertexshader");
    }//from ww w .  j a v a2  s .com

    GL20.glShaderSource(fragmentShaderProgram, prog.getFragmentSource());
    GL20.glCompileShader(fragmentShaderProgram);
    if (GL20.glGetShaderi(fragmentShaderProgram, GL20.GL_COMPILE_STATUS) == GL11.GL_FALSE) {
        System.err.println("Compile error of fragmentshader");
    }

    //
    shaderprogram = GL20.glCreateProgram();

    GL20.glAttachShader(shaderprogram, vertexShaderProgram);
    GL20.glAttachShader(shaderprogram, fragmentShaderProgram);
    GL20.glLinkProgram(shaderprogram);
    GL20.glValidateProgram(shaderprogram);

    if (GL20.glGetProgrami(shaderprogram, GL20.GL_LINK_STATUS) == GL11.GL_FALSE) {

        IntBuffer intBuffer = BufferTools.newIntBuffer(1);
        GL20.glGetProgram(shaderprogram, GL20.GL_INFO_LOG_LENGTH, intBuffer);

        int size = intBuffer.get(0);
        System.err.println("Program link error: " + size);
        if (size > 0) {
            ByteBuffer byteBuffer = BufferTools.newByteBuffer(size);
            GL20.glGetProgramInfoLog(shaderprogram, intBuffer, byteBuffer);
            byteBuffer.rewind();
            byte[] bytearray = new byte[byteBuffer.remaining()];
            byteBuffer.get(bytearray);
            System.err.println(bytearray.length);
            String s = new String(bytearray, 0, bytearray.length - 1, Charset.forName("UTF-8"));
            System.err.print("<<" + s + ">>");
            /**
             * *
             * for (byte b : bytearray) { System.err.print(b+";"); } *
             */
            System.err.println(" - End");
        } else {
            System.out.println("Unknown");
        }
        System.exit(1);
    }
    System.out.println("End of attachVFShader");
    return shaderprogram;

}

From source file:wrath.client.graphics.ShaderProgram.java

License:Open Source License

/**
 * Finalizes the shader and prepares it for rendering.
 * This is called automatically!//from  ww  w  .  j  a va  2  s.c om
 */
public void finish() {
    GL20.glUseProgram(programID);
    GL20.glLinkProgram(programID);
    GL20.glValidateProgram(programID);
    setProjectionMatrix(Game.getCurrentInstance().getRenderer().getProjectionMatrix());
    finalized = true;
}