From the NVIDIA OpenGL Performace FAQ v2:
From Fastest to Slowest:
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_QUAD_STRIP
These maximize reuse of the vertices shared within a given graphics primitive, and are all similarly fast.
GL_TRIANGLES
GL_QUADS
These aggregate (potentially multiple) disjoint triangles and quads, and amortize function overhead over multiple primitives.
GL_POLYGON
A bit slower than the independent triangles and quads.
Hope it helps. You can find the whole document on nvidia’s site, or in their NVSDK/docs/faqs
Actually triangle strip and quad strip is exactly the same because the hardware makes two triangles out of every quad you draw. Just think about it: You can exchange every GL_QUAD_STRIP in your program with GL_TRIANGLE_STRIP without changing anything else and the result won’t change.
Only optimise if you know what the bottleneck is. If you’re fillrate limited it won’t bring much to optimise geometry throughput.
Get a decent profiler to find out what parts of your code are slow, ten optimise them.
Without a profiler, you can basically forget about optimizing. I prefer NuMega Boundschecker (although I don’t have it now, used to work with it 2 years ago - this program rocks!)
I found BoundsChecker utterly useless as a…bounds checker - didn’t realise it was a profiler too.
The best profiler on the PC platform is vtune by intel, without question.
I got an evaluation version a couple of months ago of the latest version of boundschecker - it’s full of bugs - not what you need when debugging code!
Anyway, I didn’t use the truetime thing, as I’m too used to vtune, maybe I should give it a chance, but I find vtune really useful.