OpenGL透明度/半透明性

4

我在OpenGL中有一个alpha混合问题...

我尝试了一些绘制透明物体的方法...当我在绘制透明面之前禁用GL_DEPTH_TEST,并在绘制透明面后重新启用GL_DEPTH_TEST时,我看到了一个不错的(理想的)结果...

显然,我注意到根据我绘制不同面的顺序,我会得到一个或另一个结果...

然而,我决定先使用启用GL_DEPTH_TEST的实体面,然后再使用禁用GL_DEPTH_TEST的透明面来绘制...

所以,如果我使用禁用GL_DEPTH_TEST的方式绘制透明面,我会看到在内部的透明面(例如一个立方体),然后

所以,我的问题是...这样做正确吗?OpenGL是否有一种自动排序不透明和透明面的“神奇”方法?


看一下GL_ALPHA_TEST或着色器。那应该会帮助你。 - Amir Zadeh
2个回答

5
OpenGL有自动排序不透明和透明面的“魔法”方法吗?
没有。您必须自己对透明对象进行排序。或者您可以使用无序透明算法。有几种可用,但它们都不是“魔法”,大多数会消耗很多性能。

1
请查找“深度剥离”作为其中一种算法。 - Toni Ruža

0

尽管这不是理想的结果,但我通过先绘制不透明的面,然后再绘制透明的面得到了不错的结果...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接