您可以在iPad上进行的OpenGL ES调用数量上限吗?

问题描述

| 谁能告诉我在iPad上可以进行的最大OpenGL ES调用次数(即OpenGL绘制调用和状态更改)是否受到限制? 我正在开发游戏,并且看到较低的FPS,所以我想知道这是否与我的大量OpenGL调用有关。     

解决方法

OpenGL ES命令没有真正的最大值,但是每个命令确实都有一些相关的开销。应消除冗余状态更改,并应通过按先绘制所有状态再绘制下一个状态的方式对几何图形进行分组来减少昂贵的状态更改。苹果在其《 iOS OpenGL ES编程指南》中对此提出了一些建议。 但是,我很少发现OpenGL ES命令是导致我的应用程序性能显着下降的原因。较大的问题往往是由于几何图形的大小,任何着色器的复杂性或应用于场景的其他效果所致。我在这里分享了一些我为减小几何尺寸而应用的技巧,以及在这里为着色器进行性能分析的一种工具,但是我仍在学习着色器调整的来龙去脉。 如果您真的很想微调正在执行的OpenGL调用,则最好的分析工具是Xcode 4随附的新OpenGL ES Analyzer工具。我在回答中展示了该工具的几个示例屏幕在这里,我用它来识别一些冗余设置。它将为您找到这些调用,并指出它们在您的代码中的位置。您还可以使用Time Profiler来查看您是否在渲染CPU时给CPU施加了更多的负担,并找出了令人讨厌的代码行。     ,据我所知,glCalls的最大数量没有限制。但是肯定的是,调用gl的次数越多,花费的时间就越多。批处理渲染是必须使用OpenGL进行的主要优化之一。     ,不用怀疑瓶颈,而是使用Instruments找到它。 跟踪模板OpenGL ES分析是选择的武器。上次使用它时,您必须手动将其附加到设备上正在运行的进程(所有其他启动选项均失败)。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...