OpenGL的混合功能,以elminate原始重叠,但保持整体不透明度(OpenGL blendin

2019-09-16 14:08发布

我有一些几何形状,其具有单一的原语集合,这是一个三条。 一些在原始重叠三角形的,所以当我的材料添加到该几何形状的α值我看到的重叠(如预期)。 我想摆脱这种影响虽然没有改变几何 - 我试着用不同的混合模式玩耍(glBlendFunc()),但我不能得到这个工作。 我得到了一些有趣的结果,但没有什么可以消除三带的基元内不透明度效果,并保留不透明度为整个对象。 我使用OpenSceneGraph的,但它提供调用glBlendFunc()有问题的几何形状的方法。

因此,从图像,假设粉道路,紫色道路和黄色道路构成三个独立的对象,每个创建的使用单个三带(有多个条带,但为了讨论,假装只有三个不同颜色的三条这里) 。 我基本上不希望看到相同的颜色中的自相交

另外,我的问题是几乎相同的,因为这一个: OpenGL的,有没有明显的重叠不透明度元 ,但我要指出的是,当我试图接受的答案混合模式这个问题,将条未在场景中呈现所有。

Answer 1:

我已经在以前的项目相同的问题。 下面是我如何解决它:

glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA)

并绘制矩形。 这背后的想法是,你画与从帧缓冲采取所需的透明度的矩形,但在进步掩盖你吸引到让你后续的矩形将有掩蔽的区域。

来源: #1:重叠的矩形



Answer 2:

这样做的一种方式是呈现每个组路径到纹理,然后绘制纹理上具有α的窗口。 您可以为路径的每个颜色做到这一点。

这个概括的总体思路。



文章来源: OpenGL blending function to elminate primitive overlap but maintain overall opacity