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

时间:2015-07-03 16:52:26

标签: 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设备与新设备相比有多好处理动态分支结构?有没有人见过一些相关的基准?

1 个答案:

答案 0 :(得分:2)

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

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

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

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

如果您在iPhone5S上的速度为25 / 30fps,那么我认为如果您没有找到减少着色器使用的周期数量的方法,那么您无法希望应用程序在功能较弱的设备上正常工作(简化这些/切割效果)等)