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:com.mtbs3d.minecrift.provider.MCOculus.java

License:LGPL

public void endFrame() {
    GL11.glDisable(GL11.GL_CULL_FACE); // Oculus wants CW orientations, avoid the problem by turning off culling...
    GL11.glDisable(GL11.GL_DEPTH_TEST); // Nothing is drawn with depth test on...
    //GL30.glBindVertexArray(0);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); // Unbind GL_ARRAY_BUFFER for my own vertex arrays to work...
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);

    // End the frame
    super.endFrame();

    GL11.glFrontFace(GL11.GL_CCW); // Needed for OVR SDK 0.4.0
    GL11.glEnable(GL11.GL_CULL_FACE); // Turn back on...
    GL11.glEnable(GL11.GL_DEPTH_TEST); // Turn back on...
    GL11.glClearDepth(1); // Oculus set this to 0 (the near plane), return to normal...
    ARBShaderObjects.glUseProgramObjectARB(0); // Oculus shader is still active, turn it off...

    Display.processMessages();/*  w  w  w .j  av  a 2 s.c  o m*/
}

From source file:com.opengrave.og.base.Renderable2D.java

License:Open Source License

@Override
public void dealWithChange() {
    Util.checkErr();//from  w  w w  .j av a2s . co m
    if (vaoID == 0) {
        vaoID = GL30.glGenVertexArrays();
    }
    GL30.glBindVertexArray(vaoID);
    Util.checkErr();
    if (vbopID == 0) {
        vbopID = GL15.glGenBuffers();
    }
    Util.checkErr();
    if (vbocID == 0) {
        vbocID = GL15.glGenBuffers();
    }
    Util.checkErr();
    if (vbotID == 0) {
        vbotID = GL15.glGenBuffers();
    }
    Util.checkErr();
    if (changed) {
        changed = false;
        vertexList.clear();
        posBuffer.clear();
        colBuffer.clear();
        texBuffer.clear();
        recreate();
        Util.checkErr();
        int verts = vertexList.size();
        if (vertexList.size() == 0) {
            return;
        }
        if (posBuffer.capacity() != verts * 2) {
            posBuffer = BufferUtils.createFloatBuffer(verts * 2);
        }
        Util.checkErr();
        if (colBuffer.capacity() != verts * 4) {
            colBuffer = BufferUtils.createFloatBuffer(verts * 4);
        }
        if (texBuffer.capacity() != verts * 3) {
            texBuffer = BufferUtils.createFloatBuffer(verts * 3);
        }
        for (Vertex2D v2 : vertexList) {
            posBuffer.put(v2.x).put(v2.y);
            texBuffer.put(v2.tx).put(v2.ty).put(v2.tz);
            colBuffer.put(v2.r).put(v2.g).put(v2.b).put(v2.a);
        }
        posBuffer.flip();
        texBuffer.flip();
        colBuffer.flip();
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbopID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, posBuffer, GL15.GL_STREAM_DRAW);
        GL20.glVertexAttribPointer(0, 2, GL11.GL_FLOAT, false, 0, 0);
        Util.checkErr();
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbocID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, colBuffer, GL15.GL_STREAM_DRAW);
        GL20.glVertexAttribPointer(1, 4, GL11.GL_FLOAT, false, 0, 0);
        Util.checkErr();
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbotID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, texBuffer, GL15.GL_STREAM_DRAW);
        GL20.glVertexAttribPointer(2, 3, GL11.GL_FLOAT, false, 0, 0);
        Util.checkErr();
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    }
}

From source file:com.opengrave.og.base.Renderable2D.java

License:Open Source License

@Override
public void renderForPicking(Matrix4f matrix, Pickable object) {
    dealWithChange();/*  w  ww. j a va2 s  .  c  o  m*/
    if (vertexList.size() == 0) {
        return;
    }
    int pID = Resources.loadShader("pickinggui.vs", "pickinggui.fs").getProgram();
    GL20.glUseProgram(pID);
    GL30.glBindVertexArray(vaoID);
    GL20.glEnableVertexAttribArray(0);
    Util.setMatrices(pID, location2d);
    Picking.registerObject(pID, getContext(), object);
    GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, vertexList.size());
    GL20.glDisableVertexAttribArray(0);
    GL30.glBindVertexArray(0);
    GL20.glUseProgram(0);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
    GL30.glBindVertexArray(0);
}

From source file:com.opengrave.og.base.Renderable2D.java

License:Open Source License

@Override
public void render(Matrix4f matrix, RenderStyle style) {
    Util.checkErr();//from  w  w w.ja v a  2  s . c o m
    dealWithChange();
    Util.checkErr();
    if (vertexList.size() == 0) {
        return;
    }
    int pID = Resources.loadShader("gui.vs", "gui.fs").getProgram();
    GL20.glUseProgram(pID);
    GL30.glBindVertexArray(vaoID);
    GL20.glEnableVertexAttribArray(0);
    GL20.glEnableVertexAttribArray(1);
    GL20.glEnableVertexAttribArray(2);
    Util.checkErr();
    if (texture != null) {
        texture.bind(GL13.GL_TEXTURE0);
    }
    Util.setMatrices(pID, location2d);
    Util.checkErr();

    GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, vertexList.size());
    Util.checkErr();
    if (texture != null) {
        texture.unbind();
    }
    GL20.glDisableVertexAttribArray(0);
    GL20.glDisableVertexAttribArray(1);
    GL20.glDisableVertexAttribArray(2);
    Util.checkErr();

    GL30.glBindVertexArray(0);
    GL20.glUseProgram(0);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
    GL30.glBindVertexArray(0);
    Util.checkErr();
}

From source file:com.opengrave.og.base.Renderable3D.java

License:Open Source License

@Override
public void render(Matrix4f matrix, RenderStyle style) {
    dealWithChange();/*w  w  w  .j  a  va  2 s  .co  m*/
    int pID = Resources.loadShader("model.vs", "model.fs").getProgram();
    GL20.glUseProgram(pID);
    int texture = GL20.glGetUniformLocation(pID, "texture");
    int shadow = GL20.glGetUniformLocation(pID, "shadowMap");
    GL20.glUniform1i(texture, 0);
    GL20.glUniform1i(shadow, 1);
    GL30.glBindVertexArray(vao_ID);
    GL20.glEnableVertexAttribArray(0);
    GL20.glEnableVertexAttribArray(1);
    GL20.glEnableVertexAttribArray(2);
    GL20.glBindAttribLocation(pID, 0, "in_Position");
    GL20.glBindAttribLocation(pID, 1, "in_Normal");
    GL20.glBindAttribLocation(pID, 2, "in_TextureCoord");

    Util.checkErr();
    if (matList != null && matList.valid()) {
        matList.bind(pID, GL13.GL_TEXTURE0);
        Util.loadMaterials(matList, pID);

    }
    Util.checkErr();
    getContext().setMatrices(pID, matrix);
    getContext().bindShadowData(GL13.GL_TEXTURE2);
    getContext().bindLights(pID, GL13.GL_TEXTURE3);
    Util.setRenderStyle(pID, style);

    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vbo_index_ID);
    GL11.glDrawElements(GL11.GL_TRIANGLES, indexCount, GL11.GL_UNSIGNED_INT, 0);
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);
    getContext().unbindLights();
    getContext().unbindShadowData();

    if (matList != null && matList.valid()) {
        matList.unbind();
    }
    Util.checkErr();

    GL20.glDisableVertexAttribArray(0);
    GL20.glDisableVertexAttribArray(1);
    GL20.glDisableVertexAttribArray(2);
    Util.checkErr();

    GL20.glUseProgram(0);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
    GL30.glBindVertexArray(0);
}

From source file:com.opengrave.og.base.Renderable3D.java

License:Open Source License

@Override
public void renderShadows(Matrix4f matrix, Shadow shadow) {
    dealWithChange();/* w w  w.j  a v  a  2 s.  co m*/

    int pID = Resources.loadShader("model.vs", "castshadow.fs").getProgram();
    GL20.glUseProgram(pID);
    GL30.glBindVertexArray(vao_ID);
    GL20.glEnableVertexAttribArray(0);
    GL20.glBindAttribLocation(pID, 0, "in_Position");

    Util.checkErr();
    getContext().setShadowMatrices(pID, matrix, shadow);
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vbo_index_ID);
    GL11.glDrawElements(GL11.GL_TRIANGLES, indexCount, GL11.GL_UNSIGNED_INT, 0);
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);
    Util.checkErr();

    GL20.glDisableVertexAttribArray(0);
    Util.checkErr();

    GL20.glUseProgram(0);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
    GL30.glBindVertexArray(0);
}

From source file:com.opengrave.og.base.Renderable3D.java

License:Open Source License

@Override
public void dealWithChange() {
    if (vao_ID == 0) {
        vao_ID = GL30.glGenVertexArrays();
        changed = true;/* w ww  . ja v  a  2  s .  co  m*/
    }
    // set VAO object
    GL30.glBindVertexArray(vao_ID);
    if (vbo_index_ID == 0) {
        vbo_index_ID = GL15.glGenBuffers();
    }
    if (vbo_pos_ID == 0) {
        vbo_pos_ID = GL15.glGenBuffers();
    }
    if (vbo_norm_ID == 0) {
        vbo_norm_ID = GL15.glGenBuffers();
    }
    if (vbo_tex_ID == 0) {
        vbo_tex_ID = GL15.glGenBuffers();
    }

    if (changed) {

        recreate();
        changed = false;
        indexCount = vertexList.size();
        IntBuffer indexList = BufferUtils.createIntBuffer(indexCount);
        ArrayList<Vertex3D> verts = new ArrayList<Vertex3D>();
        for (Vertex3D thisVert : vertexList) {
            // Vertex3D thisVert = vertexList.get(i);
            int index = -1;
            if (verts.indexOf(thisVert) == -1) {
                verts.add(thisVert);
            }
            index = verts.indexOf(thisVert);
            indexList.put(index);
        }
        int vertCount = verts.size();
        indexList.flip();
        GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vbo_index_ID);
        GL15.glBufferData(GL15.GL_ELEMENT_ARRAY_BUFFER, indexList, GL15.GL_STATIC_DRAW);
        GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);

        FloatBuffer pos = BufferUtils.createFloatBuffer(vertCount * 3);
        FloatBuffer norm = BufferUtils.createFloatBuffer(vertCount * 3);
        FloatBuffer tex = BufferUtils.createFloatBuffer(vertCount * 3);
        box.clear();
        for (int i = 0; i < verts.size(); i++) {
            Vertex3D v1 = verts.get(i);
            box.addVector3f(v1.getPos());
            pos.put(v1.x).put(v1.y).put(v1.z);
            norm.put(v1.nx).put(v1.ny).put(v1.nz);
            tex.put(v1.tx).put(v1.ty).put(v1.tz);
        }

        // Set Vertex data
        pos.flip();
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbo_pos_ID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, pos, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(0, 3, GL11.GL_FLOAT, false, 0, 0);

        // Set Norm data
        norm.flip();
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbo_norm_ID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, norm, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(1, 3, GL11.GL_FLOAT, false, 0, 0);

        // Set Texture Co-ord data
        tex.flip();
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbo_tex_ID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, tex, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(2, 3, GL11.GL_FLOAT, false, 0, 0);

        // Unset VBO object
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    }
    // Unset VAO object
    GL30.glBindVertexArray(0);
}

From source file:com.opengrave.og.base.Renderable3D.java

License:Open Source License

@Override
public void renderForPicking(Matrix4f matrix, Pickable object) {
    dealWithChange();/*from w  w w . j  av  a2 s  .  c o m*/
    int pID = Resources.loadShader("model.vs", "pickingmodel.fs").getProgram();
    GL20.glUseProgram(pID);
    GL30.glBindVertexArray(vao_ID);
    GL20.glEnableVertexAttribArray(0);
    GL20.glBindAttribLocation(pID, 0, "in_Position");

    Util.checkErr();
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vbo_index_ID);
    getContext().setMatrices(pID, matrix);
    Picking.registerObject(pID, getContext(), object);
    GL11.glDrawElements(GL11.GL_TRIANGLES, indexCount, GL11.GL_UNSIGNED_INT, 0);
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);
    Util.checkErr();

    GL20.glDisableVertexAttribArray(0);
    Util.checkErr();

    GL20.glUseProgram(0);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
    GL30.glBindVertexArray(0);
}

From source file:com.opengrave.og.base.RenderableBoneAnimated.java

License:Open Source License

@Override
public void render(Matrix4f matrix, RenderStyle style) {
    // if (!visible) {
    // return;//from   w  w w  .  ja v  a2  s .  c om
    // }
    GL11.glDisable(GL11.GL_CULL_FACE); // TODO Enable Face Culling, and be
    // absolutely sure that all tris are
    // facing the correct way
    dealWithChange();

    int pID = Resources.loadShader("animmodel.vs", "animmodel.fs").getProgram();
    GL20.glUseProgram(pID);
    int texture = GL20.glGetUniformLocation(pID, "texture");
    int shadow = GL20.glGetUniformLocation(pID, "shadowMap");
    GL20.glUniform1i(texture, 0);
    GL20.glUniform1i(shadow, 1);
    GL30.glBindVertexArray(vao_ID);
    GL20.glBindAttribLocation(pID, 0, "in_Position");
    GL20.glBindAttribLocation(pID, 1, "in_Normal");
    GL20.glBindAttribLocation(pID, 2, "in_TextureCoord");
    GL20.glBindAttribLocation(pID, 3, "in_BoneID");
    GL20.glBindAttribLocation(pID, 4, "in_BoneWeight");

    GL20.glEnableVertexAttribArray(0);
    GL20.glEnableVertexAttribArray(1);
    GL20.glEnableVertexAttribArray(2);
    GL20.glEnableVertexAttribArray(3);
    GL20.glEnableVertexAttribArray(4);
    if (matList != null && matList.valid()) {
        matList.bind(pID, GL13.GL_TEXTURE0);
        Util.loadMaterials(matList, pID);

    }
    setBonesUniform(pID);

    getContext().setMatrices(pID, matrix);
    getContext().bindShadowData(GL13.GL_TEXTURE2);
    getContext().bindLights(pID, GL13.GL_TEXTURE3);
    Util.setRenderStyle(pID, style);
    // GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, vertCount);
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vbo_index_ID);
    GL11.glDrawElements(GL11.GL_TRIANGLES, indexCount, GL11.GL_UNSIGNED_INT, 0);
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);
    getContext().unbindLights();
    getContext().unbindShadowData();
    if (matList != null && matList.valid()) {
        matList.unbind();
    }
    GL20.glDisableVertexAttribArray(0);
    GL20.glDisableVertexAttribArray(1);
    GL20.glDisableVertexAttribArray(2);
    GL20.glDisableVertexAttribArray(3);
    GL20.glDisableVertexAttribArray(4);

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

    GL11.glEnable(GL11.GL_CULL_FACE);
}

From source file:com.opengrave.og.base.RenderableBoneAnimated.java

License:Open Source License

@Override
public void renderShadows(Matrix4f matrix, Shadow shadow) {
    // if (!visible) {
    // return;//from w  w w . j av a  2s. c  o  m
    // }
    dealWithChange();

    int pID = Resources.loadShader("animmodel.vs", "animmodel.fs").getProgram();
    GL20.glUseProgram(pID);
    GL30.glBindVertexArray(vao_ID);
    GL20.glBindAttribLocation(pID, 0, "in_Position");
    GL20.glBindAttribLocation(pID, 3, "in_BoneID");
    GL20.glBindAttribLocation(pID, 4, "in_BoneWeight");

    GL20.glEnableVertexAttribArray(0);
    GL20.glEnableVertexAttribArray(3);
    GL20.glEnableVertexAttribArray(4);
    setBonesUniform(pID);
    getContext().setShadowMatrices(pID, matrix, shadow);
    // GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, vertCount);
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vbo_index_ID);
    GL11.glDrawElements(GL11.GL_TRIANGLES, indexCount, GL11.GL_UNSIGNED_INT, 0);
    GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);

    GL20.glDisableVertexAttribArray(0);
    GL20.glDisableVertexAttribArray(3);
    GL20.glDisableVertexAttribArray(4);

    GL20.glUseProgram(0);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
    GL30.glBindVertexArray(0);

}