iPod App runs slower on 32GB model than on 8GB model
I have a big performance problem on 32GB iPod touch model 3rd generation.
The App is a port of an DS 3D game. The rendering is done with OpenGL ES 1.1. It uses OpenAL for Audio and the MPMoviePlayerController for videos.
The performance on a 8GB iPod touch is fine, it runs constantly with more than 30 fps. Then I tested it on a 32GB model of the 3rd generation and was shocked how slowly it is. The first problem I noticed was the Intro cutscene. The video was fragmented and stucks, frames has been skipped.
In the 3D level the performance was about 15 fps. The scene has about 10000 vertices in a static vertex buffer and 7000 vertices in a dynamic vertex buffer. The dynamic vertices are updated each frame, not all of them, but that part that changed last frame for skeleton animation.
I played with the build settings, Thumb on/off, optimized for armv7 and so on, with no effort. On the 8GB model it keeps running very fast and on the 32GB model it sucks.
Then I tried an other开发者_Python百科 3D Game from App store (N.O.V.A) on the 32GB model. It runs with a good performance, the video too.
Now I am at an end with my ideas.
Can someone please give me a hint what the problem could be.
Thanks for that and best regards gentle
There are three generations of the iPod Touch, with the latest generation similar specs to the iPhone 3GS, most notably, double the memory, a faster GPU, and a much better GPU than the 1st or 2nd generation.
You are comparing different hardware, since there has never been an 8GB 3rd gen model. So something your code is making it run worse on the newer hardware -- which is actually quite surprising. My guess: it's GPU-related.
iPod touch second-generation has a GPU that runs OpenGLES1.1 natively.
iPod touch third-generation has a GPU that runs OpenGLES2.0 natively and is much faster, but runs OpenGLES1.1 instructions by converting them to OpenGLES2.0 instructions. Your application is likely using 1.1 instructions that are difficult for the GPU driver to emulate using 2.0 instructions
Note: this is a simplified explanation
精彩评论