小编obs*_*ilp的帖子

像素差距来自OpenGL?

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

蓝色像素是有问题的

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

上面场景的线框(漏像素为白色)

我读到只是将1.00001的比例应用于另一个问题中的所有内容,但这对我来说似乎是一个可能导致其他问题的廉价黑客.虽然使用硬件多重采样时这些工件似乎有所减少,但我想知道是否有其他方法可以解决这个问题.

编辑:

Nicol Bolas解决这个问题的方法:

如果边缘完全匹配,OpenGL(以及所有其他硬件光栅化器)仅保证两个三角形之间的边缘无间隙渲染.这意味着你不能只在另一个边缘旁边有一个三角形.两个三角形在它们之间的共享边上必须具有相同的顶点.

因此,如果短三角形旁边有一个长三角形,那么您需要做的是将长三角形分成几个三角形,以便边缘的共享部分在两个三角形之间正确共享.

如上所述,一种可能的解决方案是将大三角形分成小三角形,以确保所有重叠的椎体都相同(即消除贪婪的网格划分).但在我的情况下,由于性能方面的原因,我想保持贪婪的网格划分.

c++ opengl

9
推荐指数
1
解决办法
887
查看次数

标签 统计

c++ ×1

opengl ×1