Example usage for org.lwjgl.opengl GL20 glLinkProgram

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

Introduction

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

Prototype

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

Source Link

Document

Links a program object.

Usage

From source file:org.jogamp.glg2d.impl.shader.AbstractShaderPipeline.java

License:Apache License

protected void createProgramAndAttach() {
    if (GL20.glIsProgram(programId)) {
        delete();/*from  w w  w .  jav a  2s. c om*/
    }

    programId = GL20.glCreateProgram();

    attachShaders();

    GL20.glLinkProgram(programId);
    checkProgramThrowException(programId, GL20.GL_LINK_STATUS);
}

From source file:org.oscim.gdx.LwjglGL20.java

License:Apache License

public void linkProgram(int program) {
    GL20.glLinkProgram(program);
}

From source file:org.spout.engine.renderer.shader.ClientShader.java

License:Open Source License

private void doCompileShader(String vsource, String fsource) {
    if (((Client) Spout.getEngine()).getRenderMode() == RenderMode.GL11) {
        return;/*from  w w  w  .jav  a2  s.co  m*/
    }

    //Create a new Shader object on the GPU
    program = GL20.glCreateProgram();

    int vShader = ShaderHelper.compileShader(vsource, GL20.GL_VERTEX_SHADER);
    GL20.glAttachShader(program, vShader);

    int fShader = ShaderHelper.compileShader(fsource, GL20.GL_FRAGMENT_SHADER);
    GL20.glAttachShader(program, fShader);

    GL20.glLinkProgram(program);

    int status = GL20.glGetProgram(program, GL20.GL_LINK_STATUS);
    if (status != GL11.GL_TRUE) {
        String error = GL20.glGetProgramInfoLog(program, 255);
        throw new ShaderCompileException("Link Error: " + error);
    }
    if (validateShader) {
        GL20.glValidateProgram(this.program);
        if (GL20.glGetProgram(program, GL20.GL_VALIDATE_STATUS) != GL11.GL_TRUE) {
            String info = GL20.glGetProgramInfoLog(program, 255);
            System.out.println("Validate Log: \n" + info);
        }

        System.out.println("Attached Shaders: " + GL20.glGetProgram(program, GL20.GL_ATTACHED_SHADERS));
        int activeAttributes = GL20.glGetProgram(program, GL20.GL_ACTIVE_ATTRIBUTES);
        System.out.println("Active Attributes: " + activeAttributes);
        int maxAttributeLength = GL20.glGetProgram(program, GL20.GL_ACTIVE_ATTRIBUTE_MAX_LENGTH);
        for (int i = 0; i < activeAttributes; i++) {
            System.out.println("\t" + GL20.glGetActiveAttrib(program, i, maxAttributeLength));
        }

        int activeUniforms = GL20.glGetProgram(program, GL20.GL_ACTIVE_UNIFORMS);
        System.out.println("Active Uniforms: " + activeUniforms);
        int maxUniformLength = GL20.glGetProgram(program, GL20.GL_ACTIVE_UNIFORM_MAX_LENGTH);
        for (int i = 0; i < activeUniforms; i++) {
            System.out.println("\t" + GL20.glGetActiveUniform(program, i, maxUniformLength));
        }
    }
    System.out.println("Compiled Shader with id: " + program);
}

From source file:org.spout.renderer.lwjgl.gl20.GL20Program.java

License:Open Source License

@Override
public void link() {
    checkCreated();/*from  w ww.  j a  v a 2 s  . co  m*/
    // Add the attribute layouts to the program state
    final TObjectIntIterator<String> iterator = attributeLayouts.iterator();
    while (iterator.hasNext()) {
        iterator.advance();
        // Bind the index to the name
        GL20.glBindAttribLocation(id, iterator.value(), iterator.key());
    }
    // Link program
    GL20.glLinkProgram(id);
    // Check program link status
    if (GL20.glGetProgrami(id, GL20.GL_LINK_STATUS) == GL11.GL_FALSE) {
        throw new IllegalStateException("Program could not be linked\n" + GL20.glGetProgramInfoLog(id, 1000));
    }
    if (CausticUtil.isDebugEnabled()) {
        // Validate program
        GL20.glValidateProgram(id);
        // Check program validation status
        if (GL20.glGetProgrami(id, GL20.GL_VALIDATE_STATUS) == GL11.GL_FALSE) {
            final Logger logger = CausticUtil.getCausticLogger();
            logger.log(Level.WARNING,
                    "Program validation failed. This doesn''t mean it won''t work, so you maybe able to ignore it\n{0}",
                    GL20.glGetProgramInfoLog(id, 1000));
        }
    }
    // Load uniforms
    uniforms.clear();
    final int uniformCount = GL20.glGetProgrami(id, GL20.GL_ACTIVE_UNIFORMS);
    for (int i = 0; i < uniformCount; i++) {
        final ByteBuffer nameBuffer = CausticUtil.createByteBuffer(256);
        GL20.glGetActiveUniform(id, i, CausticUtil.createIntBuffer(1), CausticUtil.createIntBuffer(1),
                CausticUtil.createIntBuffer(1), nameBuffer);
        nameBuffer.rewind();
        final byte[] nameBytes = new byte[256];
        nameBuffer.get(nameBytes);
        // Simplify array names
        final String name = new String(nameBytes).trim().replaceFirst("\\[\\d+\\]", "");
        uniforms.put(name, GL20.glGetUniformLocation(id, name));
    }
    // Check for errors
    LWJGLUtil.checkForGLError();
}

From source file:org.terasology.rendering.assets.GLSLShaderProgramInstance.java

License:Apache License

private void compileShaderProgram(int featureHash) {
    compileShader(GL20.GL_FRAGMENT_SHADER, featureHash);
    compileShader(GL20.GL_VERTEX_SHADER, featureHash);

    int shaderProgram = GL20.glCreateProgram();
    shaderPrograms.put(featureHash, shaderProgram);

    GL20.glAttachShader(shaderProgram, fragmentPrograms.get(featureHash));
    GL20.glAttachShader(shaderProgram, vertexPrograms.get(featureHash));
    GL20.glLinkProgram(shaderProgram);
    GL20.glValidateProgram(shaderProgram);
}

From source file:org.terasology.rendering.assets.MaterialShader.java

License:Apache License

public int generateShaderInstance() {
    int shaderProgram = GL20.glCreateProgram();

    GL20.glAttachShader(shaderProgram, fragmentProgram);
    GL20.glAttachShader(shaderProgram, vertexProgram);
    GL20.glLinkProgram(shaderProgram);
    if (GL20.glGetProgram(shaderProgram, GL20.GL_LINK_STATUS) == GL11.GL_FALSE) {
        logger.error("Failed to link shader {}.", GL20.glGetProgramInfoLog(shaderProgram, GL20.GL_LINK_STATUS));
        GL20.glDeleteProgram(shaderProgram);
        return 0;
    }/*from w ww .  j a v  a  2 s.c  o m*/
    GL20.glValidateProgram(shaderProgram);
    if (GL20.glGetProgram(shaderProgram, GL20.GL_VALIDATE_STATUS) == GL11.GL_FALSE) {
        logger.error("Failed to validate shader {}.",
                GL20.glGetProgramInfoLog(shaderProgram, GL20.GL_VALIDATE_STATUS));
        GL20.glDeleteProgram(shaderProgram);
        return 0;
    }
    return shaderProgram;
}

From source file:org.terasology.rendering.opengl.GLSLShader.java

License:Apache License

public int linkShaderProgram(int featureHash) {
    int shaderProgram = GL20.glCreateProgram();

    GL20.glAttachShader(shaderProgram, fragmentPrograms.get(featureHash));
    GL20.glAttachShader(shaderProgram, vertexPrograms.get(featureHash));
    GL20.glLinkProgram(shaderProgram);
    GL20.glValidateProgram(shaderProgram);
    return shaderProgram;
}

From source file:org.terasology.rendering.shader.ShaderProgram.java

License:Apache License

private void compileShaderProgram() {
    compileShader(GL20.GL_FRAGMENT_SHADER);
    compileShader(GL20.GL_VERTEX_SHADER);

    shaderProgram = GL20.glCreateProgram();

    GL20.glAttachShader(shaderProgram, fragmentProgram);
    GL20.glAttachShader(shaderProgram, vertexProgram);
    GL20.glLinkProgram(shaderProgram);
    GL20.glValidateProgram(shaderProgram);
}

From source file:ovh.tgrhavoc.gameengine.core.Shader.java

License:Open Source License

public void compileShader() {
    GL20.glLinkProgram(pointer);
    if (GL20.glGetProgrami(pointer, GL20.GL_LINK_STATUS) == 0) {
        System.err.println(GL20.glGetShaderInfoLog(pointer, 1024));
        System.exit(-1);//from  ww  w  . ja  va  2s.  c o m
    }

    GL20.glValidateProgram(pointer);
    if (GL20.glGetProgrami(pointer, GL20.GL_VALIDATE_STATUS) == 0) {
        System.err.println(GL20.glGetShaderInfoLog(pointer, 1024));
        System.exit(-1);
    }

}

From source file:playn.java.JavaGL20.java

License:Apache License

@Override
public void glLinkProgram(int program) {
    GL20.glLinkProgram(program);
}