I am John, and new to this forum. I want to start by saying, I love OpenGL ES. There are few things that the more I use, the more I fall in love with; C and OpenGL ES are among them.

Here is my question:
I have been doing a lot of tests for how I should setup the base rendering engine. Right now I am not using buffers, but had been considering them for quite a while. I have found that glMapBufferOES is slower then glBufferSubData which is slower then glBufferData; and I am wondering why that is.

My test environment:
OpenGL ES 1.1
iPad (first generation) - PowerVR SGX
iPhone 3G - PowerVR MBX

To my understanding, glBufferSubData should always be faster then glBufferData because glBufferData reallocs the memory each time called, thus if your size doesn't change, use glBufferSubData otherwise use glBufferData. What I have found is that glBufferSubData runs about 68% the speed of only using glBufferData.

I also understand that glMapBufferOES is an extension, but I have found that it also runs slower then glBufferSubData or glBufferData. It, in fact, is the slowest way of updating vertex information.

iPad speed: glMapBufferOES < glBufferSubData < glBufferData <= No buffers
iPhone speed: glMapBufferOES ? glBufferSubData ? glBufferData ? No buffers

Is this normal?

Thanks for your help!