Example usage for org.lwjgl.opengl GL15 glBindBuffer

List of usage examples for org.lwjgl.opengl GL15 glBindBuffer

Introduction

In this page you can find the example usage for org.lwjgl.opengl GL15 glBindBuffer.

Prototype

public static void glBindBuffer(@NativeType("GLenum") int target, @NativeType("GLuint") int buffer) 

Source Link

Document

Binds a named buffer object.

Usage

From source file:uk.co.hexeption.darkforge.utils.render.GLUtils.java

License:Open Source License

public static int genVBO() {

    int id = GL15.glGenBuffers();
    vbos.add(id);//  w ww.j a  va 2s  . c  o  m
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, id);
    return id;
}

From source file:uk.co.hexeption.darkforge.utils.render.GLUtils.java

License:Open Source License

/**
 * Cleans ups the arrays on close/*from  w ww.  j av  a  2s .  c o  m*/
 */
public static void cleanup() {

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
    glBindTexture(GL_TEXTURE_2D, 0);

    for (int vbo : vbos) {
        GL15.glDeleteBuffers(vbo);
    }

    for (int texture : textures) {
        glDeleteTextures(texture);
    }

}

From source file:uk.co.ifs_studios.engine.geometry.BasicDrawElement.java

License:Open Source License

/**
 * Set verticies to DrawElement.// ww  w  .j a v a2  s .  co m
 * 
 * @param verticies
 *            - Verticies.
 */
public void setVerticies(Vertex[] verticies) {
    float[] vertexValues = new float[verticies.length * 4];

    int vertexIndex = 0;
    for (int i = 0; i < vertexValues.length; i += 4) {
        vertexValues[i + 0] = verticies[vertexIndex].getX();
        vertexValues[i + 1] = verticies[vertexIndex].getY();
        vertexValues[i + 2] = verticies[vertexIndex].getZ();
        vertexValues[i + 3] = verticies[vertexIndex].getW();

        vertexIndex++;
    }

    FloatBuffer verticiesBuffer = BufferUtils.createFloatBuffer(vertexValues.length);
    verticiesBuffer.put(vertexValues);
    verticiesBuffer.flip();

    GL30.glBindVertexArray(this.vao);

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, this.vbo);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, verticiesBuffer, GL15.GL_STATIC_DRAW);
    GL20.glVertexAttribPointer(0, 4, GL11.GL_FLOAT, false, 0, 0);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    GL30.glBindVertexArray(0);
}

From source file:uk.co.ifs_studios.engine.geometry.BasicDrawElement.java

License:Open Source License

/**
 * Set colors to DrawElement.//from  w  w w  .  j  av a 2 s.  c  o m
 * 
 * @param colors
 *            - Colors.
 */
public void setColors(Color[] colors) {
    float[] colorValues = new float[colors.length * 4];

    int colorIndex = 0;
    for (int i = 0; i < colorValues.length; i += 4) {
        colorValues[i + 0] = colors[colorIndex].getRed();
        colorValues[i + 1] = colors[colorIndex].getGreen();
        colorValues[i + 2] = colors[colorIndex].getBlue();
        colorValues[i + 3] = colors[colorIndex].getAlpha();

        colorIndex++;
    }

    FloatBuffer colorsBuffer = BufferUtils.createFloatBuffer(colorValues.length);
    colorsBuffer.put(colorValues);
    colorsBuffer.flip();

    GL30.glBindVertexArray(this.vao);

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, this.cbo);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, colorsBuffer, GL15.GL_STREAM_DRAW);
    GL20.glVertexAttribPointer(1, 4, GL11.GL_FLOAT, false, 0, 0);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    GL30.glBindVertexArray(0);
}

From source file:uk.co.ifs_studios.engine.geometry.BasicDrawElement.java

License:Open Source License

/**
 * Set indices to DrawElement./*  w w  w.ja  v  a 2s . c om*/
 * 
 * @param indices
 *            - Indices.
 */
public void setIndices(byte[] indices) {
    this.indiceCount = indices.length;

    ByteBuffer indiciesBuffer = BufferUtils.createByteBuffer(this.indiceCount);
    indiciesBuffer.put(indices);
    indiciesBuffer.flip();

    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, this.ibo);

    GL15.glBufferData(GL15.GL_ELEMENT_ARRAY_BUFFER, indiciesBuffer, GL15.GL_STATIC_DRAW);

    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);
}

From source file:uk.co.ifs_studios.engine.geometry.BasicDrawElement.java

License:Open Source License

/**
 * Render DrawElement.//from   ww w .  ja v a 2  s. com
 */
public void render() {
    this.shader.getShaderProgram().use();

    Engine.getInstance().getWindow().getProjectionMatrix().store(this.matrixBuffer);
    this.matrixBuffer.flip();
    GL20.glUniformMatrix4(this.shader.getProjectionMatrixLocation(), false, this.matrixBuffer);

    Engine.getInstance().getGame().getCurrentState().getCamera().getViewMatrix().store(this.matrixBuffer);
    this.matrixBuffer.flip();
    GL20.glUniformMatrix4(this.shader.getViewMatrixLocation(), false, this.matrixBuffer);

    this.modelMatrix.store(this.matrixBuffer);
    this.matrixBuffer.flip();
    GL20.glUniformMatrix4(this.shader.getModelMatrixLocation(), false, this.matrixBuffer);

    GL30.glBindVertexArray(this.vao);
    GL20.glEnableVertexAttribArray(0);
    GL20.glEnableVertexAttribArray(1);

    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, this.ibo);

    GL11.glDrawElements(GL11.GL_TRIANGLES, this.indiceCount, GL11.GL_UNSIGNED_BYTE, 0);

    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);

    GL20.glDisableVertexAttribArray(0);
    GL30.glBindVertexArray(0);

    this.shader.getShaderProgram().unuse();
}

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);/*w  w  w  .  j  a  v a 2s  . co  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.LWJGL_Renderer.java

License:Open Source License

/**
  * Process the BO.// w  ww  .ja  v  a 2  s.  c  om
  * @param obj shape
  */
private void initVBO(Shape obj) {
    int nbBO = obj.getGeometry().getNumberBO(); //return 2 for the cube (1 vbo + 1 ibo)
    ib = BufferTools.newIntBuffer(nbBO);
    GL15.glGenBuffers(ib);
    int i = 0;
    for (BO bo : obj.getGeometry().getAllBO()) {
        int boHandle = ib.get(i);
        bo.setHandle(boHandle);
        if (bo instanceof IBO) {
            isIndexed = true;
            ibo = (IBO) bo;
            GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, boHandle);
            GL15.glBufferData(GL15.GL_ELEMENT_ARRAY_BUFFER, ibo.getIntBuffer(), GL15.GL_STATIC_DRAW);
            GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);
        } else {
            VBO vbo = (VBO) bo;
            //if (!vbo.getBuffer().isLoaded() ) {
            GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, boHandle);
            GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vbo.getFloatBuffer(), GL15.GL_STATIC_DRAW);
            GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
            //}
        }
        i++;
    }
    GL15.glDeleteBuffers(ib);
}

From source file:view.renderer.GridRenderer.java

public void draw() {

    GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);
    GL11.glEnableClientState(GL11.GL_COLOR_ARRAY);

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vID);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vB, GL15.GL_STATIC_DRAW);
    GL11.glVertexPointer(2, GL11.GL_INT, 2 * 4, 0L);

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, cID);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, cB, GL15.GL_STATIC_DRAW);
    GL11.glColorPointer(3, GL11.GL_FLOAT, 3 * 4, 0L);

    GL11.glDrawArrays(GL11.GL_QUADS, 0, (linesX + linesY) * 4);

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    GL11.glDisableClientState(GL11.GL_COLOR_ARRAY);
    GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY);
}

From source file:voxels.Mesh.java

License:Open Source License

private void createMesh() {
    // We'll define our quad using 4 vertices of the custom 'TexturedVertex' class
    VertexData v0 = new VertexData();
    v0.setXYZ(-0.5f, 0.5f, 0.5f);//from www  .  ja  v a  2  s . com
    v0.setRGB(1, 0, 0);
    v0.setST(0, 0);
    VertexData v1 = new VertexData();
    v1.setXYZ(-0.5f, -0.5f, 0.5f);
    v1.setRGB(0, 1, 0);
    v1.setST(0, 1);
    VertexData v2 = new VertexData();
    v2.setXYZ(0.5f, -0.5f, 0.5f);
    v2.setRGB(0, 0, 1);
    v2.setST(1, 1);
    VertexData v3 = new VertexData();
    v3.setXYZ(0.5f, 0.5f, 0.5f);
    v3.setRGB(1, 1, 1);
    v3.setST(1, 0);

    VertexData v4 = new VertexData();
    v4.setXYZ(-0.5f, 0.5f, -0.5f);
    v4.setRGB(1, 0, 0);
    v4.setST(0, 0);
    VertexData v5 = new VertexData();
    v5.setXYZ(-0.5f, -0.5f, -0.5f);
    v5.setRGB(0, 1, 0);
    v5.setST(0, 1);
    VertexData v6 = new VertexData();
    v6.setXYZ(-0.5f, -0.5f, 0.5f);
    v6.setRGB(0, 0, 1);
    v6.setST(1, 1);
    VertexData v7 = new VertexData();
    v7.setXYZ(-0.5f, 0.5f, 0.5f);
    v7.setRGB(1, 1, 1);
    v7.setST(1, 0);

    VertexData v8 = new VertexData();
    v8.setXYZ(-0.5f, 0.5f, -0.5f);
    v8.setRGB(1, 0, 0);
    v8.setST(0, 0);
    VertexData v9 = new VertexData();
    v9.setXYZ(-0.5f, 0.5f, 0.5f);
    v9.setRGB(0, 1, 0);
    v9.setST(0, 1);
    VertexData v10 = new VertexData();
    v10.setXYZ(0.5f, 0.5f, 0.5f);
    v10.setRGB(0, 0, 1);
    v10.setST(1, 1);
    VertexData v11 = new VertexData();
    v11.setXYZ(0.5f, 0.5f, -0.5f);
    v11.setRGB(1, 1, 1);
    v11.setST(1, 0);

    VertexData v12 = new VertexData();
    v12.setXYZ(0.5f, -0.5f, 0.5f);
    v12.setRGB(1, 0, 0);
    v12.setST(0, 0);
    VertexData v13 = new VertexData();
    v13.setXYZ(-0.5f, -0.5f, 0.5f);
    v13.setRGB(0, 1, 0);
    v13.setST(0, 1);
    VertexData v14 = new VertexData();
    v14.setXYZ(-0.5f, -0.5f, -0.5f);
    v14.setRGB(0, 0, 1);
    v14.setST(1, 1);
    VertexData v15 = new VertexData();
    v15.setXYZ(0.5f, -0.5f, -0.5f);
    v15.setRGB(1, 1, 1);
    v15.setST(1, 0);

    VertexData v16 = new VertexData();
    v16.setXYZ(0.5f, -0.5f, -0.5f);
    v16.setRGB(1, 0, 0);
    v16.setST(0, 0);
    VertexData v17 = new VertexData();
    v17.setXYZ(-0.5f, -0.5f, -0.5f);
    v17.setRGB(0, 1, 0);
    v17.setST(0, 1);
    VertexData v18 = new VertexData();
    v18.setXYZ(-0.5f, 0.5f, -0.5f);
    v18.setRGB(0, 0, 1);
    v18.setST(1, 1);
    VertexData v19 = new VertexData();
    v19.setXYZ(0.5f, 0.5f, -0.5f);
    v19.setRGB(1, 1, 1);
    v19.setST(1, 0);

    VertexData v20 = new VertexData();
    v20.setXYZ(0.5f, -0.5f, 0.5f);
    v20.setRGB(1, 0, 0);
    v20.setST(0, 0);
    VertexData v21 = new VertexData();
    v21.setXYZ(0.5f, -0.5f, -0.5f);
    v21.setRGB(0, 1, 0);
    v21.setST(0, 1);
    VertexData v22 = new VertexData();
    v22.setXYZ(0.5f, 0.5f, -0.5f);
    v22.setRGB(0, 0, 1);
    v22.setST(1, 1);
    VertexData v23 = new VertexData();
    v23.setXYZ(0.5f, 0.5f, 0.5f);
    v23.setRGB(1, 1, 1);
    v23.setST(1, 0);

    vertices = new VertexData[] { v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16,
            v17, v18, v19, v20, v21, v22, v23 };

    // Put each 'Vertex' in one FloatBuffer
    verticesByteBuffer = BufferUtils.createByteBuffer(vertices.length * VertexData.stride);
    FloatBuffer verticesFloatBuffer = verticesByteBuffer.asFloatBuffer();
    for (VertexData vertice : vertices) {
        // Add position, color and texture floats to the buffer
        verticesFloatBuffer.put(vertice.getElements());
    }
    verticesFloatBuffer.flip();

    // OpenGL expects to draw vertices in counter clockwise order by default
    short[] indices = new short[6 * vertices.length / 4];
    for (short i = 0; i < indices.length / 6; i++) {
        // 0, 1, 2, 2, 3, 0,4, 5 , 0, 5, 1, 0,  1, 5, 2, 5, 6, 2,  3, 0, 7, 0, 2, 7,  8, 6, 4, 6, 5, 4,  2, 3, 8, 3, 6, 8
        indices[i * 6 + 0] = (short) (0 + 4 * i);
        indices[i * 6 + 1] = (short) (1 + 4 * i);
        indices[i * 6 + 2] = (short) (2 + 4 * i);
        indices[i * 6 + 3] = (short) (2 + 4 * i);
        indices[i * 6 + 4] = (short) (3 + 4 * i);
        indices[i * 6 + 5] = (short) (0 + 4 * i);
    }

    //indices = new byte[]{0, 1, 2, 2, 3, 0,4, 5 , 0, 5, 1, 0,  1, 5, 2, 5, 6, 2,  3, 0, 7, 0, 2, 7,  8, 6, 4, 6, 5, 4,  2, 3, 8, 3, 6, 8};
    vertices = null;

    indicesCount = indices.length;
    ShortBuffer indicesBuffer = BufferUtils.createShortBuffer(indicesCount);
    indicesBuffer.put(indices);
    indicesBuffer.flip();

    // Create a new Vertex Array Object in memory and select it (bind)
    vaoId = GL30.glGenVertexArrays();
    GL30.glBindVertexArray(vaoId);

    // Create a new Vertex Buffer Object in memory and select it (bind)
    vboId = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboId);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, verticesFloatBuffer, GL15.GL_STREAM_DRAW);

    // Put the position coordinates in attribute list 0
    GL20.glVertexAttribPointer(0, VertexData.positionElementCount, GL11.GL_FLOAT, false, VertexData.stride,
            VertexData.positionByteOffset);
    // Put the color components in attribute list 1
    GL20.glVertexAttribPointer(1, VertexData.colorElementCount, GL11.GL_FLOAT, false, VertexData.stride,
            VertexData.colorByteOffset);
    // Put the texture coordinates in attribute list 2
    GL20.glVertexAttribPointer(2, VertexData.textureElementCount, GL11.GL_FLOAT, false, VertexData.stride,
            VertexData.textureByteOffset);

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    // Deselect (bind to 0) the VAO
    GL30.glBindVertexArray(0);

    // Create a new VBO for the indices and select it (bind) - INDICES
    vboiId = GL15.glGenBuffers();
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vboiId);
    GL15.glBufferData(GL15.GL_ELEMENT_ARRAY_BUFFER, indicesBuffer, GL15.GL_STATIC_DRAW);
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);

}