As you probably kow the The OpenGL Extension GL_ARB_vertex_buffer_object allows to allocate memory on the v-ram. As there are many different possibilities to use this and unknown limmitations I was wondering how to use it most effectively. I found no satisfying resources on the web and so I started to write a tool to help me evaluate the powers of VBOs.

As I have a Radeon 9700 in my system, I could only test this card. So I'd like to ask you to run the tool on your system and test what configuration fits best. Especially if you have Nvidia cards I'd be curious how the VBO-Implementation works.

As for the radeon I found some interesting Issues:

- If a VBO gets bigger than 32 Mb it won't be allocated in V-Ram but in the AGP-Ram. So you schould avoid making your VBO's to big.
- If you save you Vertices one after another (interleaved) you end up with a better performance than if you make a VBO for each component (pos, uv etc) though this comes in handy if a Vertexbuffer would exceed 32mb otherwise.
- A good way is a Vertexbuffer and an Indexbuffer. The Vertexchache seems big enough so you don't suffer a performance hit compared to a bunch of TriStrips.
- If Vertex-Size gets bigger than 32byte you suffer a performance drop.
- Texturing is pretty cheap while lightning limits the maximum throughput to (on my card) 30 MTris/s. (So lightning becomes the bottleneck with the consequence that Vertexformat and Drawmethod becomes rather unimportant performance-wise.)
- You can use hundreds of DrawCalls to draw a VBO without a big performance dropp. (Lets say 300 Triangle-Strips)
- Binding VBO's (unlike binding textures) seems to be rather cheap, too! So it might be a good idea to have a set of VBO's for every mesh instead of one big Vertex-Cache for all.

I found this information pretty valuable. Perhaps you can make some experiments on you systems and drop in your results!

-lith