2010-11-08 31 views

回答

10

你需要使你的飞机,同时禁用深度测试,并使用顺序无关的混合配方。

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

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

编辑

你可以把深度缓冲区设置为只读使用:glDepthMask(GL_FALSE)

这里是一篇很好的文章解释为什么你不能实现完美的透明度:Transparency Sorting。还可以看看Order Independent Transparency with Dual Depth Peeling文章,其中涵盖了两种方法(一种非常简单,单通),用于具有精确(或近似)的订单独立透明度。

我忘了提及Alpha to Coverage

+1

深度测试伎俩只能尽可能所有的飞机恰好有0.5不透明......?或者我现在完全疯了 – Newbie 2010-11-09 01:34:09

+0

也,我怎么把深度缓冲区只读?上一次我检查它不可能在opengl O_o或它是只写不可能的...现在太累了现在想想 – Newbie 2010-11-09 01:35:35

+0

所以没有办法做到这一点 – Newbie 2010-11-13 14:34:39

1

一个非平凡的解决方案是将平面分成几部分,对它们进行排序,然后将它们渲染回去。然而,完美的分类很难实现。张贴在其他答案在文章中 像: Transparency Sorting: Depth Sorting