Example usage for org.lwjgl.opengl GL20 glUseProgram

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

Introduction

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

Prototype

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

Source Link

Document

Installs a program object as part of current rendering state.

Usage

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

License:Open Source License

private void drawShape(Shape obj) {
    // Geometry: VBO and IBO
    if (obj.isDirty(Node.VBO)) {
        processBO(obj);// ww  w . ja v a 2  s .  c o m
        obj.setDirty(Node.VBO, false);
    }

    ShaderProg glshader = obj.getMaterial().getShaderMaterial();
    GL20.glUseProgram(glshader.getHandle());

    updateUniform();
    VBO vbo = null;

    for (Attribute attrib : attribute) {
        if (vbo.getType().equals(attrib.getType())) {
            int alocation = GL20.glGetAttribLocation(glshader.getHandle(), attrib.getName());
            GL20.glEnableVertexAttribArray(alocation);
            GL20.glVertexAttribPointer(alocation, attrib.getSize(), GL11.GL_FLOAT, false, vbo.getStride() << 2,
                    0L);
        }
    }

    if (isIndexed) {
        // draw with index
        GL11.glDrawElements(getOpenGLStyle(obj.getDrawingStyle()), /* elements */ ibo.getSize(),
                GL_UNSIGNED_INT, 0L);
        GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);
        GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY);
        GL20.glDisableVertexAttribArray(0);
    } else {
        // draw without index
        GL11.glDrawArrays(getOpenGLStyle(obj.getDrawingStyle()), 0, capacity / vbo3f.getStride());
        GL20.glDisableVertexAttribArray(0);
        GL30.glBindVertexArray(0);
    }

    GL20.glUseProgram(0);
}

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

License:Open Source License

public static void useShader(int shaderprogram) {
    GL20.glUseProgram(shaderprogram);
}

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

License:Open Source License

public void dontUseShader() {
    GL20.glUseProgram(0);
}

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

License:Open Source License

public static ShaderProg updateShader(ShaderProg prog) {
    int progID = -1;
    System.out.println("updateShader:\n" + prog.getVertexSource() + "\n------\n" + prog.getFragmentSource());
    if (prog.isDirty()) {
        try {//from  w w w  .j ava  2s.c o  m
            progID = attachVFShaders(prog);
        } catch (Exception ex) {
            System.out.println("Exception attachShaders");
            Logger.getLogger(LWJGL_Renderer.class.getName()).log(Level.SEVERE, null, ex);
            // Renderer or LWJGL_Renderer ?

        }
        prog.setHandle(progID);

        GL20.glUseProgram(progID);

        for (Uniform uniform : prog.getAllUniforms()) {
            System.out.println("uniform " + uniform.getName());
            prog.setUniformLocation(uniform.getName(), GL20.glGetUniformLocation(progID, uniform.getName()));
        }
        for (Attribute attribute : prog.getAllAttributes()) {
            System.out.println("attr " + attribute.getName());
            prog.setAttributeLocation(attribute.getName(),
                    GL20.glGetAttribLocation(progID, attribute.getName()));
        }
        GL20.glUseProgram(0);

    }
    return prog;
}

From source file:view.util.ShaderProgram.java

public void use() {
    GL20.glUseProgram(program);
}

From source file:view.util.ShaderProgram.java

public static void useZero() {
    GL20.glUseProgram(0);
}

From source file:voxicity.ChunkNode.java

License:Open Source License

public void render(Frustum camera) {
    if (empty)//from  w  w  w. j a  v  a 2  s .  co m
        return;

    AABB chunk_box = new AABB(Constants.Chunk.side_length, Constants.Chunk.side_length,
            Constants.Chunk.side_length);

    chunk_box.center_on(chunk.get_x() + chunk_box.dimensions().x, chunk.get_y() + chunk_box.dimensions().y,
            chunk.get_z() + chunk_box.dimensions().z);

    if (!camera.collides(chunk_box))
        return;

    Renderer.draw_calls++;

    if (shader_prog != 0)
        GL20.glUseProgram(shader_prog);

    // Bind VBO to vertex pointer
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vert_buf);
    GL11.glVertexPointer(3, GL11.GL_FLOAT, 0, 0);

    // Bind the texture coord VBO to texture pointer
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, tex_buf);
    GL11.glTexCoordPointer(2, GL11.GL_FLOAT, 0, 0);

    int tex_bak = GL11.glGetInteger(GL11.GL_TEXTURE_BINDING_2D);

    for (Batch batch : batches) {
        // Bind the texture for this batch
        GL11.glBindTexture(GL11.GL_TEXTURE_2D, batch.tex);

        // Bind index array
        GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, batch.indices);

        // Draw the block
        GL12.glDrawRangeElements(GL11.GL_QUADS, 0, Constants.Chunk.block_number * 24 - 1, batch.num_elements,
                GL11.GL_UNSIGNED_INT, 0);

        Renderer.batch_draw_calls++;
        Renderer.quads += batch.num_elements;
    }

    // Unbind the texture
    GL11.glBindTexture(GL11.GL_TEXTURE_2D, tex_bak);

    // Unbind all buffers
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    // Disable the shader once more
    if (shader_prog != 0)
        GL20.glUseProgram(0);
}

From source file:voxicity.ChunkNode.java

License:Open Source License

void create_shader_prog() {
    shader_prog = GL20.glCreateProgram();

    int vert_shader = create_vert_shader("shader/block.vert");
    int frag_shader = create_frag_shader("shader/block.frag");

    GL20.glAttachShader(shader_prog, vert_shader);
    GL20.glAttachShader(shader_prog, frag_shader);
    GL20.glLinkProgram(shader_prog);/*from www  .  ja v a2s.c  o  m*/

    if (check_shader_error(shader_prog)) {
        GL20.glDeleteProgram(shader_prog);
        shader_prog = 0;
    }

    GL20.glUseProgram(shader_prog);

    int uniform;
    if ((uniform = GL20.glGetUniformLocation(shader_prog, "textures")) != -1) {
        GL20.glUniform1i(uniform, 0);
    }

    System.out.println("Textures at: " + GL20.glGetUniformLocation(shader_prog, "textures"));

    GL20.glUseProgram(0);
}

From source file:voxicity.Renderer.java

License:Open Source License

private void render_batch(ChunkNode.Batch batch) {
    if (!camera.collides(batch.box))
        return;// w  w  w .  j a v  a  2 s . co  m

    Renderer.draw_calls++;

    // Use the shader the batch needs
    GL20.glUseProgram(batch.shader);

    // Bind VBO to vertex pointer
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, batch.vert_buf);
    GL11.glVertexPointer(3, GL11.GL_FLOAT, 0, 0);

    // Bind the texture coord VBO to texture pointer
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, batch.tex_buf);
    GL11.glTexCoordPointer(2, GL11.GL_FLOAT, 0, 0);

    // Bind the texture for this batch
    GL11.glBindTexture(GL11.GL_TEXTURE_2D, batch.tex);

    // Bind index array
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, batch.indices);

    // Draw the block
    GL12.glDrawRangeElements(GL11.GL_QUADS, 0, Constants.Chunk.block_number * 24 - 1, batch.num_elements,
            GL11.GL_UNSIGNED_INT, 0);

    Renderer.batch_draw_calls++;
    Renderer.quads += batch.num_elements;

    // Unbind the texture
    GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0);

    // Unbind all buffers
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    GL20.glUseProgram(0);
}

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

License:Open Source License

/**
 * Is called automatically, this method is used to update the specified shader's View Matrix, if need be.
 * @param shader The {@link wrath.client.graphics.ShaderProgram} to update.
 *///from  w w  w .j  ava 2s .  c o m
public void updateViewMatrix(ShaderProgram shader) {
    GL20.glUseProgram(shader.getProgramID());
    if (updateMat) {
        ClientUtils.createViewMatrix(this).store(matrixBuf);
        matrixBuf.flip();
        updateMat = false;
    }
    GL20.glUniformMatrix4fv(shader.getUniformVariableLocation("viewMatrix"), false, matrixBuf);
}