我有一些几何体,它有一个单一的原始集,它是一个三条带。基元中的一些三角形重叠,因此当我使用alpha值向几何体添加材质时,我会看到重叠(如预期的那样)。我想在不改变几何形状的情况下摆脱这种效果 - 我尝试使用不同的混合模式(glBlendFunc()),但我无法使其工作。我得到了一些有趣的结果,但没有什么可以消除三条带的基元内的不透明效果,并保留整个对象的不透明度。我使用的是OpenSceneGraph,但是它提供了一个为相关几何体调用glBlendFunc()的方法。
因此,从图像中可以看出,粉红色的道路,紫色的道路和黄色的道路构成了三个独立的物体,每个物体都使用一个三条带创建(有多个条带,但为了争论,假装只有三个不同颜色的三个在这里剥离)。我基本上不想看到同一颜色的自交叉
另外,我的问题与这个问题几乎相同:OpenGL, primitives with opacity without visible overlap,但我应该注意到,当我在该问题的接受答案中尝试混合模式时,条带未在场景一点。
答案 0 :(得分:3)
我在之前的项目中遇到过同样的问题。这就是我解决它的方法:
glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA)
并绘制矩形。这背后的想法是你画一个 具有所需透明度的矩形,取自 framebuffer,但在进度掩码中你所绘制的区域 你的后续矩形将被掩盖在那里。
答案 1 :(得分:1)
执行此操作的一种方法是将每组路径渲染到纹理,然后使用alpha将纹理绘制到窗口上。您可以为每种颜色的路径执行此操作。
This概述了一般概念。