iPod 应用程序在 32GB 型号上的运行速度比在 8GB 型号上慢
我在 32GB iPod touch 第 3 代型号上遇到了很大的性能问题。
该应用程序是 DS 3D 游戏的移植版。渲染是使用 OpenGL ES 1.1 完成的。它使用 OpenAL 处理音频,使用 MPMoviePlayerController 处理视频。
在 8GB iPod touch 上的性能很好,始终以超过 30 fps 的速度运行。然后我在第三代 32GB 型号上进行了测试,惊讶地发现它的速度如此之慢。我注意到的第一个问题是介绍过场动画。视频碎片化、卡顿、跳帧。
在 3D 级别中,性能约为 15 fps。该场景在静态顶点缓冲区中有大约 10000 个顶点,在动态顶点缓冲区中有 7000 个顶点。动态顶点每帧都会更新,不是全部,而是更改骨架动画最后一帧的部分。
我毫不费力地尝试了构建设置、Thumb 开/关、针对armv7 的优化等等。在 8GB 型号上,它运行速度非常快,而在 32GB 型号上,它的运行速度很糟糕。
然后我在 32GB 型号上尝试了 App store (NOVA) 中的另一个 3D 游戏。它的运行性能良好,视频也是如此。
现在我的想法结束了。
有人可以给我提示一下问题可能是什么吗?
谢谢你的好意 温和的
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 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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
iPod Touch 共有三代,最新一代的规格与 iPhone 3GS 类似,最值得注意的是,内存增加了一倍,GPU 更快,GPU 比第一代或第二代好得多。
您正在比较不同的硬件,因为从来没有 8GB 第三代型号。所以你的代码让它在较新的硬件上运行得更糟——这实际上是相当令人惊讶的。我的猜测:这与 GPU 相关。
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 具有原生运行 OpenGLES1.1 的 GPU。
iPod touch 第三代拥有原生运行 OpenGLES2.0 的 GPU,速度更快,但通过将 OpenGLES1.1 指令转换为 OpenGLES2.0 指令来运行。您的应用程序可能使用 1.1 指令,而 GPU 驱动程序很难使用 2.0 指令进行模拟
注意:这是一个简化的说明
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