List of usage examples for org.lwjgl.opengl GL30 glBindVertexArray
public static void glBindVertexArray(@NativeType("GLuint") int array)
From source file:com.grillecube.client.opengl.GLVertexArray.java
/** unbind the vao */ public void unbind() { GL30.glBindVertexArray(0); }
From source file:com.opengrave.og.base.Renderable2D.java
License:Open Source License
@Override public void dealWithChange() { Util.checkErr();//from ww w . jav a2 s .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();/*from ww w.j a v a 2 s . com*/ 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 ww w . j a va2s .com 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();/* ww w.ja v a 2 s . c o 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();//from w ww . j a v a2 s.c om 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;//from w w w . j a v a 2s .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 . jav a2s .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 ww .ja va2 s . c o m // } 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;//w w w . j a v a2 s .com // } 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); }