Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iPad/iOS上启用4x MSAA消除混叠时的瑕疵_Ios_Opengl Es_Antialiasing_Msaa - Fatal编程技术网

在iPad/iOS上启用4x MSAA消除混叠时的瑕疵

在iPad/iOS上启用4x MSAA消除混叠时的瑕疵,ios,opengl-es,antialiasing,msaa,Ios,Opengl Es,Antialiasing,Msaa,我已经使用苹果网站上的示例在我的iPad OpenGL ES 2.0应用程序上启用了4x MSAA。在模拟器上效果很好,图像很好且平滑,但在设备上,边缘上有彩色瑕疵,应进行抗锯齿处理。这存在于iPad/iPad2和iPhone4上,但不存在于模拟器中。我在下面附上了一张这件艺术品的图片。有人知道这是什么吗 它看起来非常像你的着色器,但是你没有发布着色器,所以我不能确定。请参见,当启用MSAA时,可以对像素区域内但三角形区域外的采样执行着色器。如果没有MSAA,该像素根本不会导致片段着色器执行,但

我已经使用苹果网站上的示例在我的iPad OpenGL ES 2.0应用程序上启用了4x MSAA。在模拟器上效果很好,图像很好且平滑,但在设备上,边缘上有彩色瑕疵,应进行抗锯齿处理。这存在于iPad/iPad2和iPhone4上,但不存在于模拟器中。我在下面附上了一张这件艺术品的图片。有人知道这是什么吗


它看起来非常像你的着色器,但是你没有发布着色器,所以我不能确定。请参见,当启用MSAA时,可以对像素区域内但三角形区域外的采样执行着色器。如果没有MSAA,该像素根本不会导致片段着色器执行,但现在已启用MSAA,如果其中一个采样处于活动状态,则它必须为该像素执行片段着色器


我发布的链接更深入地解释了这个问题。它还为您提供了避免此问题的方法,但我不知道OpenGL ES 2.0是否提供了质心采样的访问。如果没有,则必须使用
glDisable(GL\u MULTISAMPLE)
禁用那些导致工件的多采样渲染。当需要激活多重采样时,您可以重新启用它。

您只是在绘制纹理,还是在进行更复杂的操作?着色器是什么样子的?这是球体上的纹理,你可以看到地球上的地平线。地球的着色器只是在一个球体上进行纹理处理,然后是渲染蓝色光晕的大气着色器。你能显示一个有MSAA和没有大气着色器的图像吗?有MSAA和没有大气,瑕疵仍然存在抱歉,这是不正确的,最后一个图像在地面上仍然有大气着色器。在这里,它不带任何大气着色器。伪影消失了,因此它来自着色器。为什么启用MSAA会导致此着色器出现这种情况?(这是一个复杂的着色器)。另外,是否可以仅在该着色器过程中禁用MSAA?你太棒了。我会调查的。看起来OpenGL ES 2.0不支持质心采样。此外,我必须将我的地面纹理功能与着色器中的大气功能分离,以便仅禁用大气部分。这几乎是我唯一的选择,对吗?@mm1:差不多。如果ES 2.0没有质心采样,这是唯一的选择。但是,您可能需要检查扩展列表,因为您可能可以使用质心扩展。好了,我终于完成了将我的地面着色器与地面大气着色器分离的所有工作。最后,iOS似乎忽略了glDisable(GL_MULTISAMPLE),因为在其他着色器上禁用它们不会起任何作用。因此,没有工作,没有质心采样,我想我运气不好!