I'm trying to squeeze some performance increases out of my iPhone OpenGL ES application. According to Instruments, my tiler utilization is near 100% most of the time, and my FPS is about 24. I'd like to get my FPS up over 30. I can get there by converting from GL_FLOAT to GL_SHORT, but that presents some fairly daunting technical problems for me at the moment. I'd rather not go there.
So, I'm considering switching from glDrawArrays() to glDrawElements(). I have 35 meshes made up of 708 vertices, but a lot of those vertices are shared between faces. I am texture mapping but the mesh is mostly uniform in color. The faces that require special texturing will be left as is.
Let's say I can cut the number of vertices in half. Let's also say that I also organize my geometry in a way that makes sense for the iPhone: say, using Imagination Technologies PVRTTriStrip tool. Ignoring the small amount of extra memory for the index array, that means I've roughly cut the memory bandwidth in half so I should see a fairly nice performance increase.
Is this true, or am I missing or misunderstanding something? Advice is appreciated.