1

我有一些几何图形,它有一个单一的原始集,它是一个三条带。图元中的一些三角形重叠,所以当我将材质添加到具有 alpha 值的几何体时,我看到了重叠(如预期的那样)。我想在不改变几何形状的情况下摆脱这种效果——我尝试使用不同的混合模式(glBlendFunc()),但我无法让它工作。我得到了一些有趣的结果,但没有什么可以消除三条基元中的不透明度效果,并保留整个对象的不透明度。我正在使用 OpenSceneGraph,但它提供了一种为相关几何调用 glBlendFunc() 的方法。

在此处输入图像描述

所以从图中,假设粉红色的道路、紫色的道路和黄色的道路构成三个独立的对象,每个对象都使用一个三条创建(有多个条,但为了论证起见,假设这里只有三个不同颜色的三条) . 我基本上不想看到相同颜色内的自我交叉点

此外,我的问题与这个问题几乎相同:OpenGL, Primitives with opacity without visible overlay,但我应该注意,当我在该问题的接受答案中尝试混合模式时,条带没有在场景中渲染全部。

4

2 回答 2

3

我在之前的项目中遇到过同样的问题。这是我解决它的方法:

glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA)

并绘制矩形。这背后的想法是,您绘制一个具有所需透明度的矩形,该矩形取自帧缓冲区,但在进度中掩盖您绘制的区域,以便您随后的矩形将在那里被掩盖。

来源:Stackoverflow:重叠矩形

于 2012-04-17T00:39:13.317 回答
1

一种方法是将每组路径渲染到纹理,然后使用 alpha 将纹理绘制到窗口上。您可以为每种颜色的路径执行此操作。

概述了总体思路。

于 2012-04-17T00:40:04.293 回答