Clarification about GL_LINE_STRIP and Vertex Arrays

Started by
9 comments, last by Alessandro 12 years, 2 months ago
Hey, not finished yet: how about glMultiDrawElements + VBO's? rolleyes.gif

I think I've setup correctly the buffers, but I can't figure out how the glMultiDrawElements render call should look like:


void initGL()
{
...
glGenBuffersARB(1, &vboId);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vboId);
glBufferDataARB(GL_ARRAY_BUFFER_ARB, fullHairCounter*HAIRPOINTS*sizeof(vector3_t), verts, GL_DYNAMIC_DRAW_ARB);
glGenBuffersARB(1, &iboId);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, iboId);
glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, numIndices*sizeof(unsigned int), indices, GL_DYNAMIC_DRAW_ARB);
...
}

void setupVBO()
{
...
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vboId);
glBufferDataARB(GL_ARRAY_BUFFER_ARB, fullHairCounter*HAIRPOINTS*sizeof(vector3_t), verts, GL_DYNAMIC_DRAW_ARB);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, iboId);
glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER_ARB, globalIndices.size() *sizeof(unsigned int), (const void **) &globalIndices[0], GL_DYNAMIC_DRAW_ARB);
...
}

void renderVBO()
{
glPushMatrix();
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vboId);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, iboId);
glEnableClientState( GL_VERTEX_ARRAY );
glVertexPointer(3, GL_FLOAT, 0, 0);
glMultiDrawElements(GL_LINE_STRIP, globalIndexCount, GL_UNSIGNED_INT, 0, globalIndices.size() ); // this is clearly wrong: I don't understand how to reference data to be passed to the glMultiDrawElements...
glDisableClientState( GL_VERTEX_ARRAY );
glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
glPopMatrix();
}

This topic is closed to new replies.

Advertisement