scott
2007-08-03 16:12:58 UTC
The example code below draws a cube. It uses buffered vertex and index
data.
glBindBuffer(GL_ARRAY_BUFFER, buffers[BUFFER_Cube]);
glVertexPointer(3,GL_FLOAT,0,(GLvoid*)((char*)NULL));
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffers[BUFFER_Cube2Indices]);
glDrawElements(GL_QUADS, 24, GL_UNSIGNED_BYTE, 0);
It works fine, but I would like to know how to use
glMultiDrawElements, as I understand it is much faster than
glDrawElements (?)
However, the following crashes when it gets to the draw call:
GLsizei indices_per_quad[] = {4,4,4,4,4,4};
glBindBuffer(GL_ARRAY_BUFFER, buffers[BUFFER_Cube]);
glVertexPointer(3,GL_FLOAT,0,(GLvoid*)((char*)NULL));
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffers[BUFFER_Cube2Indices]);
glMultiDrawElements(GL_QUADS, indices_per_quad, GL_UNSIGNED_BYTE, 0,
6);
I know my vertex and index data is buffered correctly, as the
glDrawElements versions works, and just before glMultiDrawElements is
called, glGetError returns no error.
What am I doing wrong?
Thanks in advance!
-scott
data.
glBindBuffer(GL_ARRAY_BUFFER, buffers[BUFFER_Cube]);
glVertexPointer(3,GL_FLOAT,0,(GLvoid*)((char*)NULL));
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffers[BUFFER_Cube2Indices]);
glDrawElements(GL_QUADS, 24, GL_UNSIGNED_BYTE, 0);
It works fine, but I would like to know how to use
glMultiDrawElements, as I understand it is much faster than
glDrawElements (?)
However, the following crashes when it gets to the draw call:
GLsizei indices_per_quad[] = {4,4,4,4,4,4};
glBindBuffer(GL_ARRAY_BUFFER, buffers[BUFFER_Cube]);
glVertexPointer(3,GL_FLOAT,0,(GLvoid*)((char*)NULL));
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, buffers[BUFFER_Cube2Indices]);
glMultiDrawElements(GL_QUADS, indices_per_quad, GL_UNSIGNED_BYTE, 0,
6);
I know my vertex and index data is buffered correctly, as the
glDrawElements versions works, and just before glMultiDrawElements is
called, glGetError returns no error.
What am I doing wrong?
Thanks in advance!
-scott