【发布时间】:2016-10-10 12:12:30
【问题描述】:
我遇到的问题是,我渲染的场景中有一些像素 似乎丢失/不可见,因此与我的透明颜色相同 颜色。有趣的是,只有在关闭 MSAA 时才会发生这种情况。
我的第一个想法是,这可能与以下事实有关,即所有三角形都重叠并以某种方式被投影矩阵扭曲,但这些伪影似乎只出现在线条上而不是边缘上。
我在另一个问题中读到了仅将 1.00001 的比例应用于所有内容,但这对我来说似乎是一种廉价的黑客攻击,可能会导致其他问题。虽然使用硬件多重采样时这些伪影似乎减少了,但我想知道是否有其他方法可以解决这个问题。
编辑:
Nicol Bolas 解决这个问题的方法:
OpenGL(和所有其他硬件光栅化器)仅在边缘完全匹配的情况下保证两个三角形之间的边缘的无间隙渲染。这意味着你不能只让一个三角形紧挨着另一个三角形。两个三角形的共享边上的顶点必须相同。
所以如果你在一个短三角形旁边有一个长三角形,你要做的就是把长三角形分成几个三角形,这样边的共享部分就可以在两个三角形之间正确共享。
如上所述,一种可能的解决方案是将大三角形分割成小三角形,以确保所有重叠的顶点相同(即取消贪婪网格)。但就我而言,由于性能方面的原因,我想保持贪婪的网格。
【问题讨论】:
-
16 位浮点数 - 讨厌他们
-
作为低精度机器,您真的不希望您的几何图形边对边放置(正如您在实践中或 CAD 绘图中所希望的那样),因为近似错误最终会表现为图形伪影。通常情况下,你会有一个平面用于地板,它会稍微进入墙壁等等。
-
您有 T 形路口。这是stackoverflow.com/questions/18523231/… 的完全相同的副本——发布它是因为有人重新打开了(为什么?)
-
链接问题的答案不是我想要的。那里的问题似乎与应用的着色器有关,但与几何本身无关。
-
@DieEidechse12:你错了。仔细阅读:OP 认为它与他的片段着色器有关,但实际上建议的解决方案是调整顶点着色器中的几何图形以隐藏工件。这样你就不需要废除贪婪的网格——不像尼科尔建议的那样。