so far, i’ve been using seperate arrays for vertices, normals and uv-coordinates, like this:
on start up:
// Generate and bind buffers
glGenBuffers( 1, &Vertices.Id );
glBindBuffer( GL_ARRAY_BUFFER, Vertices.Id );
glBufferData( GL_ARRAY_BUFFER, ArraySize*sizeof(float)*3, Vertices.Data, GL_STATIC_DRAW );
glGenBuffers( 1, &Normals.Id );
glBindBuffer( GL_ARRAY_BUFFER, Normals.Id );
glBufferData( GL_ARRAY_BUFFER, ArraySize*sizeof(float)*3, Normals.Data, GL_STATIC_DRAW );
glGenBuffers( 1, &Coords.Id );
glBindBuffer( GL_ARRAY_BUFFER, Coords.Id );
glBufferData( GL_ARRAY_BUFFER, ArraySize*sizeof(float)*2, Coords.Data, GL_STATIC_DRAW );
render routine:
// Enable arrays and bind buffers
glEnableClientState( GL_VERTEX_ARRAY );
glBindBuffer( GL_ARRAY_BUFFER, Vertices.Id );
glVertexPointer( 3, GL_FLOAT, 0, 0 );
glEnableClientState( GL_NORMAL_ARRAY );
glBindBuffer( GL_ARRAY_BUFFER, Normals.Id );
glNormalPointer( GL_FLOAT, 0, 0 );
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
glBindBuffer( GL_ARRAY_BUFFER, Coords.Id );
glTexCoordPointer( 2, GL_FLOAT, 0, 0 );
// Draw arrays
glDrawArrays( GL_TRIANGLES, 0, ArraySize );
// Disable arrays
glDisableClientState( GL_VERTEX_ARRAY );
glDisableClientState( GL_NORMAL_ARRAY );
glDisableClientState( GL_TEXTURE_COORD_ARRAY );
// Unbind buffers
glBindBuffer( GL_ARRAY_BUFFER, 0 );
now i’m using a compiled array:
glInterleavedArrays( GL_T2F_N3F_V3F, 0, Array );
glDrawArrays( GL_TRIANGLES, 0, Size );
but i’d like to use gl*Pointer’s for my compiled array like i did before… is this possible? the pointers have a stride option, but i don’t get it how to use them in this case… thx in advance
thanks