I'm currently building an iPhone app in which I enable the user to manipulate the vertices of an OpenGL mesh. The first implementation simply pushed an interleaved vertex data array (containing vertices and texture coordinates) to the GPU every view update.

I had read several times on the web that vertex buffer objects (VBOs), in spite of being recommended by Apple, don't yield any performance gains over the more direct approach. Therefore I opted for not using them.

That is, until I started looking into squeezing more performance out of the app. I was seeing satisfactory framerates on my iPhone 3GS, but I wasn't entirely happy with the performance on the iPhone 3G. So I thought I'd try those fabled VBOs. My expectations were somewhat low since most of what I've read on the intertubes seemed to indicate little to no difference.

Good news and bad.

VBOs gave me a significant performance boost on the iPhone 3GS. But alas, no discernible difference on the iPhone 3G, where I needed it the most. Likely there's no proper hardware support for VBOs on the 3G. However, using VBOs in your code will still work on this phone, but with no performance gain.

So in conclusion, VBOs are totally your best friend, except when they're just some random guy who's generally pretty friendly but sometimes says inappropriate things at parties and don't know when it's time to leave. Yes.

Oh well.

{ ios ,  UIPickerView ,  checkmark }