Virtual Buffer Objects / VRAM question


Oct 14, 2008
Derby, UK
Visit site
I'm working on a 3D engine, and I'm wondering whether it's worth it to implement VBOs? I know they're in the GLES2.0 spec, but the advantage normally is in storing the data server side. Far as I understand both the CPU and GPU share the RAM, so would VBOs speed up rendering at all? I figure they won't, but I'm normally wrong so I thought I'd ask.


I may be wrong, but isnt all rendering in GLES done by Vertex Buffer Objects, because GLES doesnt have glBegin and glEnd.
Sort of; instead of using glBegin and glEnd you send the data by pointing to it using glVertexPointer and glDrawArrays. The memory is still on the client and is sent every time glDrawArrays is called. The advantage of VBOs is that the data's already on the server so there's no need to keep sending it, hence the speed boost.

TLDR: glVertexPointer and glDrawArrays replace glBegin and glEnd, but you can also VBOs instead.
The driver / hardware will still pre-process the data. Keeping it on the server side can hence still give a speed boost.

Check the SGX docs for more informations. They tell you how you should pack your data and which formats to use.

For textures this is even more important because of the more complex cache optimizations done by the driver on a rather large amount of data.