I am trying to realize what is better in terms of performance: a single huge VBO, with the data being managed using some sort of memory manager; or several VBOs doing switching between them at render time.
This is my current process (switching between VBO at render time):
if it’s the first use of the VBO, creates it with glGenBuffersARB(), binds it with glBindBufferARB() and fills it with glBufferDataARB().
else, just binds it.
I do the same thing for every VBO in the scene.
My question is if I could improve performance using one large VBO with some king of management agains using several VBOs.
It depends on opengl driver because as I know on NVIDIA cards using one large VBO decreases performance in most of the cases. In the case of ATI using huge VBOs performs better, but only a little because you only skip the VBO switches which are lightweight operations. In the case that many objects can be batched together, using one huge VBO for all geometry can improve performance a lot on ATI cards. Probably with this improved batching the performance is also increased on NVIDIA cards.