VBO usage : best practices

Hi everyone,

I am quite new to OpenGL 3.x, and managed to set up a working engine so far. However, I am still a bit confused by the VBOs.

I read most of the posts in there dealing with this topic, but couldn’t find reliable informations regarding the best VBO usage pratices.

I came across this post:
http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=276432&page=1

which was very interesting, because its author faces the same problems as I am, that is, dealing with huge (I mean huge) amount of datas. I am talking about some gigabytes of vertices (positions only).

My problem is the following:

  • I have a mesh composed of millions of vertices.
  • This mesh is divided into several groups (usually 10 to 100). These groups are simply arrays of indices in the mesh vertices.

What could be the best way to handle this ? I thought I might put all the vertices datas in a single VBO. Then, for each group, I would compute the normals for each face, and put in two VBOs the normals attributes and the indices
(I would do some LOD and culling at this level).
But I am still afraid this might be too much datas to handle for the driver.

I read OpenGL is supposed to manage the memory automatically when it comes to VBOs, but I did some tests (some infinite loop allocating 1ko in the VRAM at each iteration) on my bench machine(2 GeForce GTX 295 with SLI – though the SLI is not activated) and it appears I can’t go above around 400MB of datas (GL_OUT_OF_MEMORY).

Can anyone point me to some relevant documentation or tutorial regarding efficient Video RAM management ?

Thanks a lot,

Lionel