【问题标题】:Artifacts when enabling 4x MSAA anti-aliasing on iPad / iOS在 iPad / iOS 上启用 4x MSAA 抗锯齿时的伪影
【发布时间】:2011-09-23 04:57:56
【问题描述】:

我使用 Apple 网站上的示例在我的 iPad OpenGL ES 2.0 应用程序上启用了 4x MSAA。在模拟器上效果很好,图像很好而且平滑,但是在设备上,边缘上有彩色伪影,应该进行抗锯齿处理。这存在于 iPad/iPad2 和 iPhone4 上,但不存在于模拟器中。我在下面附上了一张关于神器外观的图片。有谁知道这可能是什么?

【问题讨论】:

  • 您是在简单地绘制纹理还是在进行更多相关的事情?着色器是什么样的?
  • 这是一个球体上的纹理,您在这里看到的是地球上的地平线。地球的着色器只是简单地在球体上进行纹理处理,然后是大气着色器,它正在渲染蓝光。
  • 你能用 MSAA 显示没有大气着色器的图像吗?
  • 有了 MSAA,没有大气,工件仍然存在cl.ly/2E2N343Y0W3l3m1Z3h0Y
  • 对不起,那是不正确的,最后一张图片仍然有地面上的气氛着色器。这里没有任何气氛着色器。 cl.ly/0R0K1W0X2A1U0q151L29 工件不见了,所以它来自着色器。为什么启用 MSAA 会导致此着色器出现这种情况? (这是一个复杂的着色器)。是否可以仅在该着色器通道上禁用 MSAA?

标签: ios opengl-es antialiasing msaa


【解决方案1】:

它看起来很像你的shader is attacking,,但你没有发布着色器,所以我不能确定。看,当您打开 MSAA 时,着色器就可以对像素区域内但 三角形 区域外的样本执行。如果没有 MSAA,该像素根本不会导致片段着色器执行,但现在您打开了 MSAA,如果其中一个样本处于活动状态,它必须为该像素执行片段着色器。

我发布的链接更深入地解释了这个问题。它还为您提供了避免此问题的方法,但我不知道 OpenGL ES 2.0 是否提供对质心采样的访问。如果没有,那么您将不得不为那些导致带有glDisable(GL_MULTISAMPLE) 的伪影的事物禁用多重采样渲染。您可以在需要激活多重采样时重新启用它。

【讨论】:

  • 你太棒了。会调查的。
  • 看起来 OpenGL ES 2.0 不支持质心采样。此外,我必须在着色器中将我的地面纹理功能与我的气氛功能分开,这样我就可以只禁用气氛部分。这几乎是我唯一的选择,对吧?
  • @mm1:差不多。如果 ES 2.0 没有质心采样,那是唯一的选择。但是,您可能需要检查扩展列表,因为您可能可以使用质心扩展。
  • 好吧,我终于完成了将地面着色器与地面大气着色器分离的所有工作。最后,iOS 似乎忽略了 glDisable(GL_MULTISAMPLE),因为在其他着色器上禁用它们没有任何作用。因此,由于无法正常工作且没有质心采样,我想我不走运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
相关资源
最近更新 更多