我一直在尝试执行一些 OpenGL ES 性能优化,以提高我在 iPhone 应用程序中每秒能够渲染的三角形数量,但我遇到了障碍。我尝试将我的 OpenGL ES 数据类型从固定转换为浮点(根据Apple 的建议),交错我的顶点缓冲区对象,并最大限度地减少绘图状态的变化,但这些变化都没有对渲染速度产生影响。无论如何,我似乎无法在运行 3.0 操作系统的 iPhone 3G 上将我的应用程序推到 320,000 个三角形/秒以上。根据这个基准,我应该能够在这个硬件上使用我正在使用的平滑阴影达到 687,000 个三角形/秒。
在我的测试中,当我在 Instruments 中针对正在运行的设备运行 OpenGL ES 性能工具时,我看到在渲染我的基准测试时统计“Tiler Utilization”达到了近 100%,但“Renderer Utilization”仅达到了大约 30 %。这可能提供了关于显示过程中的瓶颈是什么的线索,但我不知道这些值是什么意思,也没有找到任何关于它们的文档。有人对 iPhone OpenGL ES 仪器中的这个和其他统计数据代表什么有很好的描述吗?我知道 iPhone 3G 中的 PowerVR MBX Lite 是基于tile 的延迟渲染器,但我不确定该架构中的 Renderer 和 Tiler 之间有什么区别。
如果它有任何帮助,如果您想自己下载和测试,可以使用此应用程序的(BSD 许可)源代码。在当前配置中,每次加载新的分子结构时它都会启动一个小基准测试并将三角形/s 输出到控制台。