Example usage for org.lwjgl.opengl GL20 glAttachShader

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

Introduction

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

Prototype

public static void glAttachShader(@NativeType("GLuint") int program, @NativeType("GLuint") int shader) 

Source Link

Document

Attaches a shader object to 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();// w w  w. jav  a2  s  . com
    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 w  w .  ja v  a2  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();//from  w w w .  j ava  2  s. co  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);
    }/*from   w w  w  . j  a 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);/*from  ww w.  ja  v  a 2 s  .  c  o m*/

    validateLinkage(programId);

    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);/*w w w. j a  v a  2  s  .  c o  m*/

    validateLinkage(programId);

    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);/*from   w  w w . j  a v  a2  s .  c  om*/

    validateLinkage(programId);

    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  .jav  a  2  s. co  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 glAttachShader(int program, int shader) {
    GL20.glAttachShader(program, shader);
}