Using Tiler 100% means your bottleneck is the size of the geometry sent to the GPU . Whatever you do to reduce the size of the geometry, this can lead to an almost linear reduction in rendering time, in my experience. These setup steps have worked for me in the past:
If you have not already done so, you can look at the use of indexing, which can reduce geometry by eliminating some redundant vertices. PowerVR charts on iOS devices are also optimized for using indexed geometry.
Try using a smaller data type for your vertex information. I found that I can use GLshort instead of GLfloat for my vertices and normals, without losing accuracy in rendering. This will significantly reduce your geometry and lead to good rendering acceleration.
Add similar colored vertices and visualize them as one group in a given color, instead of providing color information for the vertices. The overhead of the few additional calls to call that are required will be significantly outweighed by the acceleration you get from not sending all this color information. I saw an 18% reduction in rendering time by sorting colors in one of my larger models.
You are already using VBOs, so you have taken advantage of this optimization.
Do not stop the rendering pipeline anywhere. Cut out everything that reads the current state, like all glGet * calls, because they really fight with the PowerVR GPU stream.
There are other things you can do that will lead to smaller performance improvements, for example, using alternating vertices, normal texture data in your VBOs, aligning your data to 4 byte boundaries, etc., but the ones above, ve had the biggest impact on customizing my own OpenGL ES 1.1 application.
Most of these points are well described in the Vertex Data Guidelines section of the Apple OpenGL ES Programming Guide for iOS.
Brad larson
source share