Bra*_*son 25 iphone opengl-es instruments
我一直试图执行一些OpenGL ES性能优化,试图增加我能够在我的iPhone应用程序中呈现的每秒三角形数量,但我已经碰到了一堵砖墙.我已经尝试将我的OpenGL ES数据类型从固定点转换为浮点(根据Apple的推荐),交错我的顶点缓冲区对象,并最大限度地减少绘图状态的变化,但这些变化都没有对渲染速度产生影响.无论如何,我似乎无法在运行3.0操作系统的iPhone 3G上将我的应用程序推到320,000三角形以上.根据这个基准测试,我应该能够使用我正在使用的平滑阴影在这个硬件上达到687,000个三角形/秒.
在我的测试中,当我在Instruments中运行OpenGL ES性能工具对运行的设备时,我看到统计"Tiler利用率"在渲染我的基准测试时达到接近100%,但"渲染器利用率"仅达到约30 %.这可能提供了关于显示过程中瓶颈是什么的线索,但我不知道这些值是什么意思,我没有找到任何关于它们的文档.有人对iPhone OpenGL ES仪器中的这个和其他统计数据有什么好的描述吗?我知道iPhone 3G中的PowerVR MBX Lite是基于图块的延迟渲染器,但我不确定渲染器和Tiler在该架构中的区别.
如果它有任何帮助,如果您想自己下载和测试,可以使用此应用程序的(BSD许可的)源代码.在当前配置中,每次加载新的分子结构并将三角形输出到控制台时,它会启动一个小基准.
Piv*_*vot 26
Tiler利用率和渲染器利用率百分比分别测量顶点和片段处理硬件的占空比.在MBX上,Tiler利用率通常随着发送到GPU的顶点数据量(根据顶点的数量和每个顶点发送的属性的大小)进行缩放,并且片段利用率通常随着透支和纹理采样而增加.
在您的情况下,最好的方法是减少您发送的每个顶点的大小.对于初学者,我会尝试按颜色对原子和键进行分级,并使用恒定颜色而不是数组发送每个分区.我还建议调查短裤是否适合您的位置和法线,给予适当的缩放.在这种情况下,您可能还必须按位置进行分区,如果缩放以提供足够的精度,则不会覆盖您需要的范围.这些类型的技术可能需要额外的绘制调用,但我怀疑顶点吞吐量的改善将超过额外的每次绘制调用CPU开销.
请注意,确保每个顶点属性在32位边界上开始通常是有益的(在MBX和其他地方),这意味着如果将它们切换为短路,则应将位置和法线填充到4个组件.MBX平台的特性也使得在这种情况下你想要在glVertexPointer的调用中实际包含该位置的W分量.
您也可以考虑为您的多边形数据(尤其是球体)采用DOT3等替代照明方法,但这需要特别注意确保您不会使渲染片段受限,或者无意中发送比以前更多的顶点数据.
| 归档时间: |
|
| 查看次数: |
7727 次 |
| 最近记录: |