1

我想绘制透明多边形(例如金字塔)。有些面看起来是透明的,而有些面看起来是不透明的。

我使用 GL_TRIANGLE_STRIP 绘图。

我启用了混合模式,但没有运气。

请看附图,


在此处输入图像描述

4

1 回答 1

3

这是因为三角形的绘制顺序。首先绘制一些三角形,将它们的深度值写入深度纹理,然后下一个三角形出现并检查它前面是否有东西。如果有,则不会渲染。

如果后面的三角形先渲染,那么没问题,前面的三角形看深度纹理,看到它有更大的z值所以它被正确渲染,这些是颜色的地方透明度较低。

当前面的三角形首先渲染时,问题就出现了。它将深度值写入深度缓冲区,然后后面的三角形出现,看到前面已经有东西了,所以它不会被渲染。

您有多种方法可以解决此问题,您可以禁用深度测试、对三角形进行排序以使其按顺序排列或使用深度剥离之类的算法。这些算法中的每一个都有副作用或者只是非常复杂,这就是为什么你在游戏中看不到太多透明度的原因。

于 2017-01-05T09:25:23.087 回答