Hi
When I use VBOs with glDrawArrays() it works fine. However, when I use glDrawElements() instead I keep getting the following exception:
element vertex_buffer_object must be disabled to call this method
at the glDrawElements() call.
Does anyone have a solution to this highly confusing aspect of VBOs?
PS. I am using JOGL and don’t know if the problem arises due to the versions of glIndexPointer() and glDrawElements() called.
Thanks
Graham
if (mIsUsingVertexIndices)
{
IndexTriMesh3D triMesh = (IndexTriMesh3D)mGeometricObject;
int numberTriangles = triMesh.numberTriangles();
int numberIndices = 3 * numberTriangles;
glv.glEnableClientState(GL2.GL_VERTEX_ARRAY); // enable vertex arrays
glv.glEnableClientState(GL2.GL_ELEMENT_ARRAY_BUFFER); // enable vertex indices
glv.glEnableClientState(GL2.GL_COLOR_ARRAY); // enable colour arrays
glv.glBindBuffer(GL2.GL_ARRAY_BUFFER,mVBO);
glv.glVertexPointer(3, GL.GL_FLOAT, 0, 0); // set the vertex pointer
glv.glBindBuffer(GL2.GL_ARRAY_BUFFER,mVBOColours);
glv.glColorPointer(3, GL.GL_FLOAT, 0, 0);
glv.glIndexPointer(GL2.GL_UNSIGNED_INT, 0, mVertexIndices);
glv.glDrawElements(GL2.GL_TRIANGLES, numberIndices, GL.GL_UNSIGNED_INT, mVertexIndices);
glv.glDisableClientState(GL2.GL_VERTEX_ARRAY); // disable vertex arrays
glv.glDisableClientState(GL2.GL_ELEMENT_ARRAY_BUFFER); // disable vertex colour array
glv.glDisableClientState(GL2.GL_COLOR_ARRAY); // disable vertex colour array
}