GL_TRIANGLE_STRIP 和透明度问题

GL_TRIANGLE_STRIP and transparency problems

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

我使用GL_TRIANGLE_STRIP绘图。

我启用了混合模式,但没有成功。

请看附件,



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

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

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

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