Example usage for org.lwjgl.opengl GL30 glGenVertexArrays

List of usage examples for org.lwjgl.opengl GL30 glGenVertexArrays

Introduction

In this page you can find the example usage for org.lwjgl.opengl GL30 glGenVertexArrays.

Prototype

@NativeType("void")
public static int glGenVertexArrays() 

Source Link

Document

Generates vertex array object names.

Usage

From source file:com.grillecube.client.opengl.GLVertexArray.java

public GLVertexArray() {
    this(GL30.glGenVertexArrays());
}

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

License:Open Source License

@Override
public void dealWithChange() {
    Util.checkErr();//from  w  w w.ja  v a  2s  .  c  o 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.Renderable3D.java

License:Open Source License

@Override
public void dealWithChange() {
    if (vao_ID == 0) {
        vao_ID = GL30.glGenVertexArrays();
        changed = true;// ww  w  . j av  a 2s  .c  o 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.RenderableBoneAnimated.java

License:Open Source License

@Override
public void dealWithChange() {
    if (vao_ID == 0) {
        vao_ID = GL30.glGenVertexArrays();
    }/*from ww  w .ja  v a 2s  . c o  m*/
    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 (vbo_weight_ID == 0) {
        vbo_weight_ID = GL15.glGenBuffers();
    }
    if (vbo_bone_ID == 0) {
        vbo_bone_ID = GL15.glGenBuffers();
    }

    if (changed) {
        // vertexList.clear();
        recreate();
        changed = false;
        indexCount = vertexList.size();
        IntBuffer indexList = BufferUtils.createIntBuffer(indexCount);
        ArrayList<VertexAnimated> verts = new ArrayList<VertexAnimated>();
        for (VertexAnimated thisVert : vertexList) {
            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);
        FloatBuffer bone = BufferUtils.createFloatBuffer(vertCount * 4);
        FloatBuffer weight = BufferUtils.createFloatBuffer(vertCount * 4);
        // box.clear();
        for (int i = 0; i < verts.size(); i++) {
            VertexAnimated 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);
            bone.put(v1.influence.getBoneId(0)).put(v1.influence.getBoneId(1)).put(v1.influence.getBoneId(2))
                    .put(v1.influence.getBoneId(3));
            weight.put(v1.influence.getWeight(0)).put(v1.influence.getWeight(1)).put(v1.influence.getWeight(2))
                    .put(v1.influence.getWeight(3));
        }

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

        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, true, 0, 0);

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

        bone.flip();
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbo_bone_ID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, bone, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(3, 4, GL11.GL_FLOAT, false, 0, 0);

        weight.flip();
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbo_weight_ID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, weight, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(4, 4, GL11.GL_FLOAT, false, 0, 0);
        /*
         * changed = false;
         * 
         * vertCount = vertexList.size(); FloatBuffer pos =
         * BufferUtils.createFloatBuffer(vertCount * 3); FloatBuffer norm =
         * BufferUtils.createFloatBuffer(vertCount * 3); FloatBuffer tex =
         * BufferUtils.createFloatBuffer(vertCount * 3); FloatBuffer bone =
         * BufferUtils.createFloatBuffer(vertCount * 4); FloatBuffer weight
         * = BufferUtils.createFloatBuffer(vertCount * 4); for
         * (VertexAnimated va : vertexList) {
         * pos.put(va.x).put(va.y).put(va.z);
         * norm.put(va.nx).put(va.ny).put(va.nz);
         * tex.put(va.tx).put(va.ty).put(va.tz);
         * bone.put(va.influence.getBoneId(0))
         * .put(va.influence.getBoneId(1)) .put(va.influence.getBoneId(2))
         * .put(va.influence.getBoneId(3));
         * weight.put(va.influence.getWeight(0))
         * .put(va.influence.getWeight(1)) .put(va.influence.getWeight(2))
         * .put(va.influence.getWeight(3)); }
         * 
         * 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);
         * 
         * 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);
         * 
         * 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);
         * 
         * bone.flip(); GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER,
         * vbo_bone_ID); GL15.glBufferData(GL15.GL_ARRAY_BUFFER, bone,
         * GL15.GL_STATIC_DRAW); GL20.glVertexAttribPointer(3, 4,
         * GL11.GL_FLOAT, false, 0, 0);
         * 
         * weight.flip(); GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER,
         * vbo_weight_ID); GL15.glBufferData(GL15.GL_ARRAY_BUFFER, weight,
         * GL15.GL_STATIC_DRAW); GL20.glVertexAttribPointer(4, 4,
         * GL11.GL_FLOAT, false, 0, 0);
         */
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    }
    GL30.glBindVertexArray(0);
}

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

License:Open Source License

@Override
public void dealWithChange() {
    if (vaoID == 0) {
        vaoID = GL30.glGenVertexArrays();
    }//from ww w.  j ava 2  s  . c o m
    GL30.glBindVertexArray(vaoID);
    if (vboID == 0) {
        vboID = GL15.glGenBuffers();
    }
    if (vbocID == 0) {
        vbocID = GL15.glGenBuffers();
    }

    if (changed) {
        changed = false;
        recreate();
        vertCount = vertexList.size();
        if ((vertCount & 1) == 1) { // Dirty fix for odd numbers
            vertCount = 0;
            return;
        }
        if (vertCount == 0) {
            return;
        }
        if (posBuffer == null || posBuffer.capacity() != vertCount * 3) {
            posBuffer = BufferUtils.createFloatBuffer(vertCount * 3);
        }
        if (colBuffer == null || colBuffer.capacity() != vertCount * 4) {
            colBuffer = BufferUtils.createFloatBuffer(vertCount * 4);
        }
        for (VertexPoint va : vertexList) {
            posBuffer.put(va.x).put(va.y).put(va.z);
            colBuffer.put(va.r).put(va.g).put(va.b).put(va.a);
        }
        posBuffer.flip();
        colBuffer.flip();

        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, posBuffer, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(0, 3, GL11.GL_FLOAT, false, 0, 0);

        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbocID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, colBuffer, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(1, 4, GL11.GL_FLOAT, false, 0, 0);
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    }
    GL30.glBindVertexArray(0);
}

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

License:Open Source License

@Override
public void dealWithChange() {
    if (vaoID == 0) {
        vaoID = GL30.glGenVertexArrays();
    }//from   ww  w. j a va  2 s .c om
    GL30.glBindVertexArray(vaoID);
    if (vbopID == 0) {
        vbopID = GL15.glGenBuffers();
    }
    if (vbooID == 0) {
        vbooID = GL15.glGenBuffers();
    }
    if (vbonID == 0) {
        vbonID = GL15.glGenBuffers();
    }
    if (changed) {
        vertexList.clear();
        posBuffer.clear();
        offsetBuffer.clear();
        normBuffer.clear();
        recreate();
        changed = false;
        int verts = vertexList.size();
        if (vertexList.size() == 0) {
            return;
        }
        if (posBuffer.capacity() != verts * 4) {
            posBuffer = BufferUtils.createFloatBuffer(verts * 4);
        }
        if (offsetBuffer.capacity() != verts * 4) {
            offsetBuffer = BufferUtils.createFloatBuffer(verts * 4);
        }
        if (normBuffer.capacity() != verts * 3) {
            normBuffer = BufferUtils.createFloatBuffer(verts * 3);
        }
        for (int i = 0; i < vertexList.size(); i += 3) {
            VertexLiquid vm0, vm1, vm2;
            vm0 = vertexList.get(i);
            vm1 = vertexList.get(i + 1);
            vm2 = vertexList.get(i + 2);
            posBuffer.put(vm0.x).put(vm0.y).put(vm0.z).put(vm0.tex);
            posBuffer.put(vm1.x).put(vm1.y).put(vm1.z).put(vm0.tex);
            posBuffer.put(vm2.x).put(vm2.y).put(vm2.z).put(vm0.tex);
            offsetBuffer.put(0).put(0).put(0).put(0);
            offsetBuffer.put(vm1.x - vm0.x).put(vm1.y - vm0.y).put(0).put(0);
            offsetBuffer.put(vm2.x - vm0.x).put(vm2.y - vm0.y).put(0).put(0);
            normBuffer.put(vm0.nx).put(vm0.ny).put(vm0.nz);
            normBuffer.put(vm1.nx).put(vm1.ny).put(vm1.nz);
            normBuffer.put(vm2.nx).put(vm2.ny).put(vm2.nz);
        }
        posBuffer.flip();

        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbopID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, posBuffer, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(0, 4, GL11.GL_FLOAT, false, 0, 0);

        offsetBuffer.flip();

        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbooID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, offsetBuffer, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(1, 4, GL11.GL_FLOAT, false, 0, 0);

        normBuffer.flip();

        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbonID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, normBuffer, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(2, 3, GL11.GL_FLOAT, false, 0, 0);

        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    }

}

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

License:Open Source License

@Override
public void dealWithChange() {
    if (vaoID == 0) {
        vaoID = GL30.glGenVertexArrays();
    }//from   ww  w  .j a va2  s.  c o m
    GL30.glBindVertexArray(vaoID);
    if (vbopID == 0) {
        vbopID = GL15.glGenBuffers();
    }
    if (vbotID == 0) {
        vbotID = GL15.glGenBuffers();
    }
    if (vbotDID == 0) {
        vbotDID = GL15.glGenBuffers();
    }
    if (vboNID == 0) {
        vboNID = GL15.glGenBuffers();
    }
    if (changed) {
        changed = false;
        vertexList.clear();
        posBuffer.clear();
        texBuffer.clear();
        texDBuffer.clear();
        normBuffer.clear();
        recreate();
        int verts = vertexList.size();
        if (vertexList.size() == 0) {
            return;
        }
        if (posBuffer.capacity() != verts * 3) {
            posBuffer = BufferUtils.createFloatBuffer(verts * 3);
        }
        if (texBuffer.capacity() != verts * 3) {
            texBuffer = BufferUtils.createFloatBuffer(verts * 3);
        }
        if (texDBuffer.capacity() != verts * 3) {
            texDBuffer = BufferUtils.createFloatBuffer(verts * 3);
        }
        if (normBuffer.capacity() != verts * 3) {
            normBuffer = BufferUtils.createFloatBuffer(verts * 3);
        }
        for (int i = 0; i < vertexList.size(); i += 3) {
            VertexMultiTex vm0, vm1, vm2;
            vm0 = vertexList.get(i);
            vm1 = vertexList.get(i + 1);
            vm2 = vertexList.get(i + 2);
            posBuffer.put(vm0.x).put(vm0.y).put(vm0.z);
            posBuffer.put(vm1.x).put(vm1.y).put(vm1.z);
            posBuffer.put(vm2.x).put(vm2.y).put(vm2.z);
            texBuffer.put(vm0.tx).put(vm0.ty).put((float) vm0.tex);
            texBuffer.put(vm1.tx).put(vm1.ty).put((float) vm1.tex);
            texBuffer.put(vm2.tx).put(vm2.ty).put((float) vm2.tex);
            texDBuffer.put((float) vm0.tex).put((float) vm1.tex).put((float) vm2.tex);
            texDBuffer.put((float) vm0.tex).put((float) vm1.tex).put((float) vm2.tex);
            texDBuffer.put((float) vm0.tex).put((float) vm1.tex).put((float) vm2.tex);
            normBuffer.put(vm0.nx).put(vm0.ny).put(vm0.nz);
            normBuffer.put(vm1.nx).put(vm1.ny).put(vm1.nz);
            normBuffer.put(vm2.nx).put(vm2.ny).put(vm2.nz);
        }
        posBuffer.flip();
        texBuffer.flip();
        texDBuffer.flip();
        normBuffer.flip();
        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbopID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, posBuffer, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(0, 3, GL11.GL_FLOAT, false, 0, 0);

        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbotID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, texBuffer, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(1, 3, GL11.GL_FLOAT, false, 0, 0);

        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbotDID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, texDBuffer, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(2, 3, GL11.GL_FLOAT, false, 0, 0);

        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboNID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, normBuffer, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(3, 3, GL11.GL_FLOAT, true, 0, 0);

        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    }

}

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

License:Open Source License

@Override
public void dealWithChange() {
    // Safely assume every frame is a new frame in terms of particle
    // positions.
    if (idVao == 0) {
        idVao = GL30.glGenVertexArrays();
    }//www  .  j  a va  2  s  .  c  om
    GL30.glBindVertexArray(idVao);
    if (idVboColours == 0) {
        idVboColours = GL15.glGenBuffers();
    }
    if (idVboPositions == 0) {
        idVboPositions = GL15.glGenBuffers();
    }
    if (idVboScale == 0) {
        idVboScale = GL15.glGenBuffers();
    }

    size = particleList.size() * 4;
    if (positions == null || positions.capacity() != size) {
        positions = BufferUtils.createFloatBuffer(size);
    }
    if (colours == null || colours.capacity() != size) {
        colours = BufferUtils.createFloatBuffer(size);
    }
    if (scales == null || scales.capacity() != size) {
        scales = BufferUtils.createFloatBuffer(size);
    }
    positions.rewind();
    colours.rewind();
    scales.rewind();
    for (ParticlePart particle : particleList) {
        Vector3f pos = particle.getPosition().toVector3(), sca = particle.getScaleData();
        Vector4f col = particle.getColour();

        positions.put(pos.x).put(pos.y).put(pos.z).put(1f);
        colours.put(col.x).put(col.y).put(col.z).put(col.w);
        scales.put(sca.x).put(sca.y).put(sca.z).put(1f);

    }
    positions.flip();
    colours.flip();
    scales.flip();
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, idVboPositions);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, positions, GL15.GL_STREAM_DRAW);
    GL20.glVertexAttribPointer(0, 4, GL11.GL_FLOAT, false, 0, 0);

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, idVboColours);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, colours, GL15.GL_STREAM_DRAW);
    GL20.glVertexAttribPointer(1, 4, GL11.GL_FLOAT, false, 0, 0);

    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, idVboScale);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, scales, GL15.GL_STREAM_DRAW);
    GL20.glVertexAttribPointer(2, 4, GL11.GL_FLOAT, false, 0, 0);

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

}

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

License:Open Source License

@Override
public void dealWithChange() {
    if (vaoID == 0) {
        vaoID = GL30.glGenVertexArrays();
    }//  w w w .  ja  v a  2 s.  c o m
    GL30.glBindVertexArray(vaoID);
    if (vboID == 0) {
        vboID = GL15.glGenBuffers();
    }
    if (vboCID == 0) {
        vboCID = GL15.glGenBuffers();
    }
    if (vbosID == 0) {
        vbosID = GL15.glGenBuffers();
    }

    if (changed) {
        changed = false;
        // vertexList.clear();
        recreate();
        synchronized (vertexList) {
            vertCount = vertexList.size();
            if (vertCount == 0) {
                return;
            }
            if (posBuffer == null || posBuffer.capacity() != vertCount * 3) {
                posBuffer = BufferUtils.createFloatBuffer(vertCount * 3);
            }
            if (colBuffer == null || colBuffer.capacity() != vertCount * 4) {
                colBuffer = BufferUtils.createFloatBuffer(vertCount * 4);
            }
            if (scaleBuffer == null || scaleBuffer.capacity() != vertCount * 4) {
                scaleBuffer = BufferUtils.createFloatBuffer(vertCount * 4);
            }
            posBuffer.position(0);
            colBuffer.position(0);
            scaleBuffer.position(0);
            for (VertexPoint va : vertexList) {
                posBuffer.put(va.x).put(va.y).put(va.z);
                colBuffer.put(va.r).put(va.g).put(va.b).put(va.a);
                scaleBuffer.put(va.size).put(va.texture).put(0f).put(0f);
            }
        }
        posBuffer.flip();
        colBuffer.flip();
        scaleBuffer.flip();

        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, posBuffer, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(0, 3, GL11.GL_FLOAT, false, 0, 0);

        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboCID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, colBuffer, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(1, 4, GL11.GL_FLOAT, false, 0, 0);

        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbosID);
        GL15.glBufferData(GL15.GL_ARRAY_BUFFER, scaleBuffer, GL15.GL_STATIC_DRAW);
        GL20.glVertexAttribPointer(2, 4, GL11.GL_FLOAT, false, 0, 0);

        GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);

    }
    GL30.glBindVertexArray(0);
}

From source file:com.opengrave.og.light.Depth2DFramebuffer.java

License:Open Source License

public Depth2DFramebuffer(int size) {
    framebufferSize = size;/*from  w w w. ja va2  s  .c  o m*/
    framebuffer = GL30.glGenFramebuffers();
    GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, framebuffer);
    shadowMap = new Texture2DShadowMap(framebufferSize);

    shadowMap.bindToFrameBuffer();

    // GL11.glDrawBuffer(GL30.GL_COLOR_ATTACHMENT0);
    GL11.glDrawBuffer(GL11.GL_NONE);
    Util.checkErr();
    GL11.glReadBuffer(GL11.GL_NONE);
    int i = GL30.glCheckFramebufferStatus(GL30.GL_FRAMEBUFFER);
    if (i != GL30.GL_FRAMEBUFFER_COMPLETE) {
        throw new RuntimeException("Framebuffer creation failed with code: " + i);
    }
    GL30.glBindFramebuffer(GL30.GL_FRAMEBUFFER, 0);

    // TESTING STUFF
    count = 2;
    FloatBuffer pos = BufferUtils.createFloatBuffer(3 * 3 * count);
    FloatBuffer tex = BufferUtils.createFloatBuffer(2 * 3 * count);
    pos.put(0.75f).put(0.75f).put(0f);
    pos.put(0.75f).put(0.25f).put(0f);
    pos.put(0.25f).put(0.75f).put(0f);
    pos.put(0.25f).put(0.25f).put(0f);

    pos.put(0.75f).put(0.25f).put(0f);
    pos.put(0.25f).put(0.75f).put(0f);
    pos.flip();
    tex.put(1f).put(1f);
    tex.put(1f).put(0f);
    tex.put(0f).put(1f);
    tex.put(0f).put(0f);
    tex.put(1f).put(0f);

    tex.put(0f).put(1f);
    tex.flip();
    vao_ID = GL30.glGenVertexArrays();
    GL30.glBindVertexArray(vao_ID);
    int vbo_pos_ID = GL15.glGenBuffers();
    int vbo_tex_ID = GL15.glGenBuffers();
    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);
    GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbo_tex_ID);
    GL15.glBufferData(GL15.GL_ARRAY_BUFFER, tex, GL15.GL_STATIC_DRAW);
    GL20.glVertexAttribPointer(1, 2, GL11.GL_FLOAT, false, 0, 0);
}