IPhone and Vertex Buffer Objects
I've just started playing with opengl es on an iphone for the last couple of weeks and I am looking at refactoring some of my code to use Vertex Buffer Objects (VBO). Before I do that, though I would like to make sure it's worth it. The problem is afaik the only reason you are creating a VBO is to transfer a chunk of data to a graphics card so that it doesn't need to be pulled from the system bar when using it. The iPhone, however, doesn't have a dedicated dedicated drawer that I'm aware of, so I'm struggling to figure out why I would benefit from using VBO at all. I've seen conversations on the internet with conflicting opinions, and Apple certainly wants a developer to use it, so there is probably still a reason to use them, but just wanted to see if any of them have an opinion.to add.
a source to share
I have not seen any performance improvement on the iPhone 3G. I moved a bunch of stuff to VBOs but ended up supporting it as it became more difficult for me to make other performance gains. This is not the 25% rapid increase in performance that I was hoping for.
I read somewhere that it may affect newer hardware (3GS), but I have no links to it.
a source to share
It depends. (Sorry).
Rob didn't see any improvement for his setup, but here's an interesting post that has seen significant improvement.
a source to share
The main reason for the existence of VBO is the presence of static data in 3D models. The first bottleneck you run into is the slowness of copying data to video memory (using the inaccessible block glBegin / glEnd or glVertexPointer, glBufferData and friends).
Imagine an old flying toaster screensaver. All toasts are static (changing only position) - why is the waste resource copying them every frame from cpu memory to gpu's? Copy it once using buffers and draw it with one command. And, depending on how you do the animation, even animated toasters can be described in a static way.
My first 2D game I started without VBOs. When I switched to VBOs it made no difference (like Rob). But when I refactored to use more static buffers, the FPS went from 20 to 40. Since my goal was to reach 30, I was pleased. I had some ideas to refactor even more, keeping everything static, but I don't have time (game pending, next next).
a source to share