1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| private float[] vertices = { 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, 0.5f, 0.0f, 0.0f, 0.5f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f }; private float[] indices = { 0, 1, 2, 2, 3, 0, 3, 2, 5, 5, 4, 3, 4, 5, 1, 1, 0, 4, 0, 3, 4, 1, 2, 5 }; FloatBuffer verticesBuffer; FloatBuffer indicesBuffer; private int indicesCount = 0; private int vaoid = 0; private int vboid = 0; private int vboindicesid = 0; public TriangularPrism(){ verticesBuffer = BufferUtils.createFloatBuffer(vertices.length); verticesBuffer.put(vertices); verticesBuffer.flip(); indicesBuffer = BufferUtils.createFloatBuffer(indices.length); indicesBuffer.put(indices); indicesBuffer.flip(); indicesCount = indices.length; vaoid = GL30.glGenVertexArrays(); GL30.glBindVertexArray(vaoid); vboid = GL15.glGenBuffers(); GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vboid); GL15.glBufferData(GL15.GL_ARRAY_BUFFER, verticesBuffer, GL15.GL_STATIC_DRAW); GL20.glVertexAttribPointer(0, 3, GL11.GL_FLOAT, false, 0, 0); GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
GL30.glBindVertexArray(0); vboindicesid = GL15.glGenBuffers(); GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vboindicesid); GL15.glBufferData(GL15.GL_ELEMENT_ARRAY_BUFFER, indicesBuffer, GL15.GL_STATIC_DRAW); GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0); Util.exitOnGLError("TriangularPrism"); }
public void render(){ GL30.glBindVertexArray(vaoid); GL20.glEnableVertexAttribArray(0); GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY); GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, vboindicesid); GL11.glDrawElements(GL11.GL_TRIANGLES, indicesCount, GL11.GL_UNSIGNED_BYTE, 0); GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0); GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY); GL20.glDisableVertexAttribArray(0); GL30.glBindVertexArray(0); Util.exitOnGLError("TriangularPrism.render"); } public void destroy(){ GL20.glDisableVertexAttribArray(0); GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0); GL15.glDeleteBuffers(vboid); GL30.glBindVertexArray(0); GL30.glDeleteVertexArrays(vaoid); GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0); GL15.glDeleteBuffers(vboindicesid); } |