Vexator
09-08-2005, 11:01 AM
i want to render only a part of my model. this is from my render routine. it works fine if i use glDrawElements to draw everything, but glDrawRangeElements as shown below doesn't work. shouldn't this actually only render from index 12 to 48?! or what am i doing wrong?!
glEnableClientState( GL_VERTEX_ARRAY );
glBindBufferARB( GL_ARRAY_BUFFER, Vertices->Id );
glVertexPointer( 3, GL_FLOAT, 0, 0 );
glEnableClientState( GL_NORMAL_ARRAY );
glBindBufferARB( GL_ARRAY_BUFFER, Normals->Id );
glNormalPointer( GL_FLOAT, 0, 0 );
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
glBindBufferARB( GL_ARRAY_BUFFER, Coordinates->Id );
glTexCoordPointer( 2, GL_FLOAT, 0, 0 );
glBindBufferARB( GL_ELEMENT_ARRAY_BUFFER, Indices->Id );
glDrawRangeElements( GL_TRIANGLES, 12, 48, 36, GL_UNSIGNED_INT, 0 );
glDisableClientState( GL_VERTEX_ARRAY );
glDisableClientState( GL_NORMAL_ARRAY );
glDisableClientState( GL_TEXTURE_COORD_ARRAY );
glBindBufferARB( GL_ARRAY_BUFFER, 0 );
glBindBufferARB( GL_ELEMENT_ARRAY_BUFFER, 0 );sry i know there have been ten thousand people asking sth like that before but i searched the forum and didn't find a hint :p
glEnableClientState( GL_VERTEX_ARRAY );
glBindBufferARB( GL_ARRAY_BUFFER, Vertices->Id );
glVertexPointer( 3, GL_FLOAT, 0, 0 );
glEnableClientState( GL_NORMAL_ARRAY );
glBindBufferARB( GL_ARRAY_BUFFER, Normals->Id );
glNormalPointer( GL_FLOAT, 0, 0 );
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
glBindBufferARB( GL_ARRAY_BUFFER, Coordinates->Id );
glTexCoordPointer( 2, GL_FLOAT, 0, 0 );
glBindBufferARB( GL_ELEMENT_ARRAY_BUFFER, Indices->Id );
glDrawRangeElements( GL_TRIANGLES, 12, 48, 36, GL_UNSIGNED_INT, 0 );
glDisableClientState( GL_VERTEX_ARRAY );
glDisableClientState( GL_NORMAL_ARRAY );
glDisableClientState( GL_TEXTURE_COORD_ARRAY );
glBindBufferARB( GL_ARRAY_BUFFER, 0 );
glBindBufferARB( GL_ELEMENT_ARRAY_BUFFER, 0 );sry i know there have been ten thousand people asking sth like that before but i searched the forum and didn't find a hint :p