However subsequent calls to glDrawArrays with different first values don’t give me the other faces, instead I get garbage like random polygons to random points in the screen.
I’ve tried a heap of different values for first, like 1 through to 10, and none of them work. I’m sure the problem is that I don’t understand glVertexPointer properly. Any help would be greatly appreciated.
A std::vector<T> manages a contiguous array of data (somewhere on the heap). However that does not mean that all the Faces of your Mesh are contiguous as well, each of them is allocated somewhere on the heap, only the pointers to that memory (which is what std::vector stores internally) are contiguous in your Mesh.