谁能告诉我在iPad上可以进行的最大OpenGL ES调用次数(即OpenGL绘制调用和状态更改)是否受到限制?
我正在开发游戏,并且看到较低的FPS,所以我想知道这是否与我的大量OpenGL调用有关。
最佳答案
OpenGL ES命令没有真正的最大值,但是每个命令确实都有一些相关的开销。应消除冗余状态更改,并应通过按先绘制所有状态再绘制下一个状态的方式对几何图形进行分组来减少昂贵的状态更改。苹果在OpenGL ES Programming Guide for iOS中对此有一些建议。
但是,我很少发现OpenGL ES命令是导致我的应用程序性能显着下降的原因。较大的问题往往是由于几何图形的大小,任何着色器的复杂性或应用于场景的其他效果所致。我分享了一些我为减小几何尺寸here而应用的技巧,以及一个用于对着色器here进行性能分析的工具,但我自己仍然是learning the ins-and-outs of shader tuning。
如果您确实在乎微调正在执行的OpenGL调用,则最好的分析工具是Xcode 4随附的新OpenGL ES Analyzer工具。我在回答here中展示了该工具的几个示例屏幕,我用它来识别一些冗余设置。它将为您找到这些调用,并指出它们在您的代码中的位置。您还可以使用Time Profiler来查看是否给CPU施加了比渲染帧时更多的负载,并跟踪了令人讨厌的代码行。
关于iphone - 您可以在iPad上进行的OpenGL ES调用数量上限吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6136823/