I have spent about a week trying to get this code to work. I have gone to about 10 different websites and watched multiple videos on VBOs and VAOs. I think that I am just making a stupid mistake but I am not sure. I just need someone else to look at this code and tell me if something is wrong.
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, // Left Bottom
2, 3, 0, // Left Top
3, 2, 5, // Right Bottom
5, 4, 3, // Right Top
4, 5, 1, // Back Bottom
1, 0, 4, // Back Top
0, 3, 4, // Top
1, 2, 5 // Bottom
};
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);
}
Thank you for everything!
Longarmx