【发布时间】:2010-11-20 05:50:44
【问题描述】:
我一直在尝试执行一些 OpenGL ES 性能优化,以提高我在 iPhone 应用程序中每秒能够渲染的三角形数量,但我遇到了障碍。我尝试将我的 OpenGL ES 数据类型从固定转换为浮点(每个 Apple's recommendation),交错我的顶点缓冲区对象,并最小化绘图状态的变化,但这些变化都没有对渲染速度产生影响。无论如何,我似乎无法在运行 3.0 操作系统的 iPhone 3G 上将我的应用程序推到 320,000 个三角形/秒以上。根据this benchmark 的说法,使用我使用的平滑着色,我应该能够在此硬件上达到 687,000 个三角形/秒。
在我的测试中,当我在 Instruments 中针对正在运行的设备运行 OpenGL ES 性能工具时,我看到在渲染我的基准测试时统计“Tiler Utilization”接近 100%,但“Renderer Utilization”只是越来越到 30% 左右。这可能提供了关于显示过程中的瓶颈是什么的线索,但我不知道这些值是什么意思,也没有找到任何关于它们的文档。有人对 iPhone OpenGL ES 仪器中的这个和其他统计数据代表什么有很好的描述吗?我知道 iPhone 3G 中的 PowerVR MBX Lite 是 tile-based deferred renderer,但我不确定该架构中的 Renderer 和 Tiler 之间会有什么区别。
如果它有任何帮助,如果你想自己下载和测试它,这个应用程序的(BSD 许可)源代码is available。在当前配置下,每次加载新的分子结构时都会启动一个小基准测试并将三角形/s 输出到控制台。
【问题讨论】:
-
你的三角形有多大?我认为其中一个统计数据更多的是关于像素数,另一个是关于三角形数。如果您缩小屏幕以减少屏幕填充,相对利用率数字会发生变化吗?
-
这取决于我加载的模型,但它们往往很小。无论模型的缩放级别如何,数字似乎都保持不变。此外,我尝试将 OpenGL 视图大小减小到现在的一半,但没有任何效果,这似乎排除了填充率限制。
标签: iphone opengl-es instruments