Cas’ sprites thread has me in an optimization frenzy with my own code now.
Currently, for my VBOs, I take each triangle from a mesh and systematically dump each vertex along with each color, normal, and texture coordinate into 4 respective arrays (vertex, color, normal, and texture). When updating for animated meshes, I loop through the whole list of vertices (including the duplicates) and update them to their new position (same thing with the other arrays if something changes). Then, for drawing, I bind each one and call glDrawArrays.
Now, I know for a fact that my updates would benefit from not having to loop through so many duplicates for the vertices. However, the texture coordinates are making this difficult. Each vertex can (and often does) have multiple texture coordinates depending on which face is calling it. How do you handle this in an indexed VBO?
Or am I just stuck having to duplicate each vertex over and over?