Situation: I have an application that calls for a ~15x~15 grid of 3D models. The models are rotated in place (in fixed increments of ~45 degrees), but do not move from their grid position. The grid will move around. There will likely be less than ten different models, each being used several times over. The models are static, and probably less than 40 polygons each. Think of a chess board, each square being from a small set of models.
So how best to display all this? I want to support as many different platforms as possible (minimum spec of OpenGL 1.1) - alternative code paths are *okay*, but I'd rather waste run-time performance than coding time, unless the benefits are worth it.
As I see it my options are:
1. Brute force without transformations. Render all vertices in their correct places.
2. Brute force with transformations. Render models at origin and rotate them then translate them to the required position.
3. Display lists with transformations. Use a DL for each model, rotated and translated as before.
4. Display lists with trans*lations*. To save on push/pop calls, make DLs for each possible rotation of each model.
5. Vertex arrays with transformations. Yadda, yadda.
6. Brute force vertex arrays. Each frame, calculate all vertex coordinates and block-copy them into an array; then draw it all at once.
7. VBOs with transformations. Higher requirements, and probably not worth the time for the performance gain in my situation?