OpenGL:渲染两个相互交叉的透明平面:不可能或不可能?

时间:2010-11-08 19:26:09

标签: opengl transparency

我很难解决这个问题,似乎无法渲染。

如何解决这个问题?我希望OpenGL渲染它看起来像下面这张图片的右侧:

alt text

2 个答案:

答案 0 :(得分:11)

您需要在禁用深度测试并使用与订单无关的混合公式时渲染您的平面。

如果背面有一些不透明的几何图形,请绘制这些几何图形,将深度缓冲区设置为只读而不是禁用深度测试,并渲染透明的几何图形。

还有处理这一常见问题的先进技术,如深度剥离。

修改

您可以使用:glDepthMask(GL_FALSE)将深度缓冲区设置为只读。

这是一篇很好的文章,解释为什么你无法实现完美的透明度:Transparency Sorting。另请参阅Order Independent Transparency with Dual Depth Peeling文章,其中介绍了两种方法(一种是非常简单和单一的方法),用于具有精确(或近似)顺序的独立透明度。

我忘了提及Alpha to Coverage

答案 1 :(得分:1)

一个重要的解决方案是将飞机分成几部分,对它们进行排序,然后将它们渲回到前面。然而,完美的分类很难实现。 就像在另一个答案中发表的文章一样: Transparency Sorting: Depth Sorting