Artifacts when enabling 4x MSAA anti-aliasing on iPad / iOS
我已使用Apple网站上的示例在我的iPad OpenGL ES 2.0应用程序中启用了4倍MSAA。在模拟器上,这可以很好地工作,并且图像清晰且平滑,但是在设备上,应该在边缘上进行彩色混叠,以防止出现锯齿现象。这在iPad / iPad2和iPhone4上存在,但在模拟器中不存在。我在下面附上了工件的外观图片。任何人都知道这可能是什么吗?
- 您只是在绘制纹理还是正在进行更多的工作?着色器是什么样的?
-
这是一个球体上的纹理,您可以在此处看到地球的地平线。用于地球的着色器只是在一个球体上进行纹理处理,然后是用于渲染蓝色发光的大气着色器。
-
您可以在不使用大气着色器的情况下使用MSAA显示图像吗?
-
在MSAA且没有大气的情况下,文物仍然在那里cl.ly/2E2N343Y0W3l3m1Z3h0Y
-
抱歉,这是不正确的,最后一张图像在地面上仍然有一个大气着色器。这里没有任何大气着色器。 cl.ly/0R0K1W0X2A1U0q151L29该工件消失了,因此它来自着色器。为什么启用MSAA会导致此着色器出现此问题? (它是一个复杂的着色器)。也可以仅在该着色器通道上禁用MSAA吗?
看起来很像您的着色器正在攻击,但是您没有发布着色器,所以我不请参见,打开MSAA时,就有可能对位于像素区域内但在三角形区域外的样本执行着色器。没有MSAA,此像素根本不会导致片段着色器执行,但是现在您打开了MSAA,如果其中一个样本处于活动状态,则它必须为该像素执行片段着色器。
我发布的链接更深入地说明了该问题。它还为您提供了避免此问题的方法,但是我不知道OpenGL ES 2.0是否提供对质心采样的访问。如果不是,那么对于那些导致glDisable(GL_MULTISAMPLE)产生伪影的事情,您将不得不禁用多采样渲染。需要激活多重采样时,可以重新启用它。
- 你真棒。会调查一下。
-
看来OpenGL ES 2.0不支持质心采样。另外,我必须将我的地面纹理功能与着色器中的气压功能分开,以便仅禁用气压部分。那几乎是我唯一的选择,对吧?
-
@ mm1:差不多。如果ES 2.0没有质心采样,那就是唯一的选择。但是,您可能要检查扩展名列表,因为可能会使用质心扩展名。
-
好吧,我终于完成了所有工作,将地面着色器与地面大气着色器分开。最终,iOS似乎忽略了glDisable(GL_MULTISAMPLE),因为在其他着色器上禁用它们不会执行任何操作。因此,在无法正常工作且没有质心采样的情况下,我想我很幸运!