Since I'm using Object.Triangles.Index, an array of vertex indicies, I must have to use GL_ELEMENT_ARRAY_BUFFER somewhere, right? Do I need to glGenBuffer and get a buffer for Object.Triangles.Index? Something like:
// Initialization CodeglGenBuffers( 1, &Object.Triangles.VBOName);glBindBuffer( GL_ELEMENT_ARRAY_BUFFER, Object.Triangles.VBOName);glBufferData( GL_ELEMENT_ARRAY_BUFFER, Object.Triangles.IndexCurrentSize*sizeof(unsigned int), Object.Triangles.Index, GL_STATIC_DRAW);glGenBuffers( 1, &Object.VertexName);glBindBuffer( GL_ARRAY_BUFFER, Object.VertexName);glBufferData( GL_ARRAY_BUFFER, Object.VertexCurrentSize*3*sizeof(float), Object.Vertex, GL_STATIC_DRAW);glGenBuffers( 1, &Object.ColorName ); glBindBuffer( GL_ARRAY_BUFFER, Object.ColorName );glBufferData( GL_ARRAY_BUFFER, Object.VertexCurrentSize*4*sizeof(unsigned char), Object.Color, GL_STATIC_DRAW);glGenBuffers( 1, &Object.NormalName ); glBindBuffer( GL_ARRAY_BUFFER, Object.NormalName );glBufferData( GL_ARRAY_BUFFER, Object.VertexCurrentSize*3*sizeof(float), Object.Normal, GL_STATIC_DRAW);
// Draw CodeglEnableClientState(GL_VERTEX_ARRAY);glEnableClientState(GL_COLOR_ARRAY);glEnableClientState(GL_NORMAL_ARRAY); glBindBuffer(GL_ARRAY_BUFFER, Object.VertexName);glVertexPointer(3, GL_FLOAT, 0, 0);glBindBuffer(GL_ARRAY_BUFFER, Object.ColorName);glColorPointer(4, GL_UNSIGNED_BYTE, 0, 0);glBindBuffer(GL_ARRAY_BUFFER, Object.NormalName);glNormalPointer(GL_FLOAT, 0, 0);glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, Object.Triangles.VBOName);glDrawElements(GL_TRIANGLES, Object.Triangles.IndexCurrentSize, GL_UNSIGNED_INT, Object.Triangles.Index);
If I'm thinking of this right, I'm setting the gl*Pointers to their correct buffers, binding the array of vertex indices, then drawing. Am I on the right track?