我遇到的问题是,我的渲染场景中有一些像素似乎缺失/不可见,因此颜色与我的清晰颜色相同.有趣的是,只有在关闭MSAA时才会发生这种情况.

我的第一个想法是,它可能与事实有关,即所有三角形都是重叠的,并且不知何故被投影矩阵扭曲,但这些伪影似乎只出现在线而不是边缘.

我读到只是将1.00001的比例应用于另一个问题中的所有内容,但这对我来说似乎是一个可能导致其他问题的廉价黑客.虽然使用硬件多重采样时这些工件似乎有所减少,但我想知道是否有其他方法可以解决这个问题.
编辑:
Nicol Bolas解决这个问题的方法:
如果边缘完全匹配,OpenGL(以及所有其他硬件光栅化器)仅保证两个三角形之间的边缘无间隙渲染.这意味着你不能只在另一个边缘旁边有一个三角形.两个三角形在它们之间的共享边上必须具有相同的顶点.
因此,如果短三角形旁边有一个长三角形,那么您需要做的是将长三角形分成几个三角形,以便边缘的共享部分在两个三角形之间正确共享.
如上所述,一种可能的解决方案是将大三角形分成小三角形,以确保所有重叠的椎体都相同(即消除贪婪的网格划分).但在我的情况下,由于性能方面的原因,我想保持贪婪的网格划分.
如果边缘完全匹配,OpenGL(以及所有其他硬件光栅化器)仅保证两个三角形之间的边缘无间隙渲染.这意味着你不能只在另一个边缘旁边有一个三角形.两个三角形在它们之间的共享边上必须具有相同的顶点.
因此,如果短三角形旁边有一个长三角形,那么您需要做的是将长三角形分成几个三角形,以便边缘的共享部分在两个三角形之间正确共享.
既然你似乎正在构建一个由立方体组成的世界,那对你来说应该相当容易.
您要做的另一件事是确保两个三角形之间的两个共享顶点是二进制相同的.gl_Position顶点着色器的输出必须是完全相同的值.因此,如果您计算VS中立方体顶点的位置,则需要以保证二进制相同结果的方式执行此操作.
但在我的情况下,由于性能方面的原因,我想保持贪婪的网格划分.
然后你需要决定哪个更重要:性能还是正确性.因为没有办法强制光栅化器允许这样的边缘无间隙.这是浮点精度等问题,在不同的硬件上总是不同的.