IOS:OpenGL ES 2.0 与 3.0 中具有动态分支的着色器的性能

标签 ios performance opengl-es opengl-es-2.0 opengl-es-3.0

我有一个基于 OpenGL ES 3.0 的 IOS 应用程序,我将把它移植到 ES 2.0。它包含带有一些昂贵的着色器,我猜,循环和 ifs。尽管该应用程序在支持 OpenGL ES 3.0 的设备上运行正常,但我不确定它是否会在 ES 2.0 设备(我没有)上运行良好。所以我想知道与较新的 IOS 设备相比,较旧的 IOS 设备处理动态分支结构有多好?有没有人看过一些相关的基准?

最佳答案

这不是 GLES2 或 GLES3 的问题,因为您可以在 GLES3.0 设备上使用 GLES2.0(甚至 GLES1.0)。

这更多是关于 GPU 的片段处理能力、处理每帧所需的片段数量、着色器的周期成本(您可以使用 PVRShaderEditor 工具进行评估,您可以在 Imagination 上找到该工具技术网站)以及您如何在着色器中读取纹理。

功能较弱的 ES3.0 兼容设备是 iPhone 5S。

因此,如果您目前在 5S 上的帧率为 60fps,那么我不会太担心 iPhone5 和 4S 等设备,您可能会达到 20 到 30fps 或更高。在 iPad2/3 上,您可能需要使用降低的分辨率,因为它们有大屏幕,而 GPU 可能无法跟上。 现在对于 iPhone4,这是另一个故事......当试图在着色器中做复杂的事情时,这个设备非常慢(超过 ~20 个周期会降低性能......)和/或如果你经常使用透明度(例如:全屏透明quad(s) 显示在其他元素之上)或者如果您使用渲染目标进行后期处理。

如果您在 iPhone5S 上的帧率为 25/30fps,那么如果您没有找到减少着色器使用的循环次数(简化那些/切割效果)的方法,我认为您不能希望该应用程序在功能较弱的设备上正常工作等等)

关于IOS:OpenGL ES 2.0 与 3.0 中具有动态分支的着色器的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31211374/

相关文章:

ios - 与 SWIFT 同步键值信息的简便方法

ios - 如何将元数据添加到 AVAudioRecorder 录制的 AAC 文件中?

ios - 从使用 MessageKit 创建的 ChatViewController 推送其他 ViewController

performance - 在 Firefox 中分析 Webworkers

ios - 加载图像或使用 CGGradient 更有效?

sorting - 我应该如何对对象进行排序?通过着色器还是通过网格?

ios - Soundcloud iOS SDK - 是否有注册 View Controller ?

java - 减少 JavaFX RAM 使用

opengl-es - GLSL 优化 : check if variable is within range

objective-c - 如何创建像 iOS 游戏 'Contre Jour' 一样的土地(山丘)?