List of usage examples for org.lwjgl.opengl GL30 glGenVertexArrays
@NativeType("void") public static int glGenVertexArrays()
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); }