GL_TRIANGLE_STRIP和透明度问题

时间:2017-01-05 09:17:23

标签: opengl gl-triangle-strip glblendfunc

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

我正在使用GL_TRIANGLE_STRIP绘图。

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

请参阅附图,


enter image description here

1 个答案:

答案 0 :(得分:2)

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

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

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

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