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