当drawableMultisample设置为GLKViewDrawableMultisample4X时,glClear非常慢

时间:2015-07-28 05:16:00

标签: ios opengl-es opengl-es-2.0 glkit

我正在为iOS开发一个绘图应用程序。我注意到当我将drawableMultisample设置为GLKViewDrawableMultisample4X时,fps从60下降到30左右。我试图理解导致fps下降的原因并将渲染循环减少到以下代码:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

我什么都没画,只执行glClear。使用此渲染循环,fps为37.将drawableMultisample设置为GLKViewDrawableMultisampleNone的相同渲染循环导致60 fps。

我在iPad Air测试。

启用多重采样时是否可以提高性能?

1 个答案:

答案 0 :(得分:1)

iPad Air 1具有相当高的分辨率但是GPU的强大程度并不足以处理它,就像你在one这样的基准测试中看到的那样,例如与iPad Air 2相比(iPad Air 2更多)相同分辨率的速度提高2倍。

当您启用4X MSAA时,您告诉GPU实际渲染4倍像素,因此即使只是清除屏幕也会导致性能下降也不足为奇(MSAA适用于任何事情,因此在清除屏幕时我想每个像素清除仍然是抗锯齿的)

iPad上的游戏并不罕见......甚至不使用MSAA4X ......当它们具有复杂的片段着色器时,以降低的分辨率(例如:75%/ 50%)运行。请注意,以50%的分辨率运行将4除以要处理的像素数,而不是2(因为您将宽度和高度减少50%=> w * 0.5 * h * 0.5 = w * h * 0.25)

所以你应该:

  1. 以原始分辨率接受30fps并继续使用MSAA4X
  2. 以降低的分辨率(例如:50%)运行以补偿MSAA,希望仍能保持60 fps
  3. 禁用MSAA并保持原始分辨率
  4. 建议2可能会觉得有点奇怪,但你应该测试它,它实际上可能会给你一个比3更好的质量......这一切都取决于60FPS对你来说有多重要。

    作为最后一点,我可以告诉你,我工作的IOS上的大多数复杂的“AAA”3D游戏根本就没有使用MSAA,我们已经有足够的性能问题而没有启用它...仅限iPhone6 (不是6+分辨率太高)或者iPad Air 2你最终可以考虑MSAA,如果你的游戏已经保证恒定60FPS。