我有一个带洞的多边形,当在OpenGL中用半透明颜色渲染时,它会在镶嵌三角形的接缝处显示出一些伪像(通过GLUtesselator)。这有点奇怪,因为如果用不透明颜色绘制同一个多边形,它就不会有这样的伪像。伪影显示为从多边形内圆延伸到外边界的虚线:
多边形内部出现更多伪影:
它看起来像是两个相邻三角形边缘之间颜色的阿尔法混合出血。但我不知道如何缓解这个问题。有没有人以前见过这个问题?或者有没有人能指出问题可能是什么以及可能的解决方案?
knsnq2tg1#
OpenGL保证绘制共享一条边的两个三角形时,每个被覆盖的碎片只生成一次,因此您可以渲染无伪像的半透明多边形。然而,这个保证只有在两个三角形的边的两个顶点都相同的情况下才成立,如果你用GL_SMOOTH_POLYGON反锯齿多边形,这个保证也不成立。在没有看到相关代码的情况下,很难判断这里是什么情况,但我肯定会检查共享边的顶点坐标,看看它们是否相同。
GL_SMOOTH_POLYGON
1条答案
按热度按时间knsnq2tg1#
OpenGL保证绘制共享一条边的两个三角形时,每个被覆盖的碎片只生成一次,因此您可以渲染无伪像的半透明多边形。
然而,这个保证只有在两个三角形的边的两个顶点都相同的情况下才成立,如果你用
GL_SMOOTH_POLYGON
反锯齿多边形,这个保证也不成立。在没有看到相关代码的情况下,很难判断这里是什么情况,但我肯定会检查共享边的顶点坐标,看看它们是否相同。