您所说的优化 OpenGL ES 性能的情况是 Time Profiler 不太适合帮助您解决的问题。Time Profiler 只是测量在各种函数和方法上花费的 CPU 端时间,而不是渲染时在 GPU 上的实际负载。此外,iOS GPU 的延迟特性意味着绘图调用的处理实际上可能比您预期的要晚得多,导致某些功能看起来像瓶颈,而实际上并非如此。它们恰好发生在由早期调用排队的操作最终执行时。
作为建议,不要以每秒帧数为单位,而是以毫秒为单位报告从帧渲染开始到 a glFinish()
or-presentRenderbuffer:
调用之后所花费的时间。当您进行分析时,您希望直接处理渲染所需的时间,因为更容易理解您对这个数字的影响,而不是它的倒数,每秒帧数。此外,正如您所发现的,iOS 将其显示帧速率限制在 60 FPS,但您可以测量远低于 16.7 毫秒的渲染时间,以区分两种快速方法之间的差异。
除了基于时间的测量,查看 OpenGL ES Driver 工具中的 Tiler 和 Renderer Utilization 统计数据,以了解您在 GPU 的顶点和片段处理部分上施加的负载。当与渲染时应用程序的整体 CPU 负载相结合时,这可以合理地表示一种方法与另一种方法的效率。