我想绘制透明多边形(例如金字塔)。有些面看起来是透明的,而有些面看起来是不透明的。
我使用 GL_TRIANGLE_STRIP 绘图。
我启用了混合模式,但没有运气。
请看附图,
这是因为三角形的绘制顺序。首先绘制一些三角形,将它们的深度值写入深度纹理,然后下一个三角形出现并检查它前面是否有东西。如果有,则不会渲染。
如果后面的三角形先渲染,那么没问题,前面的三角形看深度纹理,看到它有更大的z值所以它被正确渲染,这些是颜色的地方透明度较低。
当前面的三角形首先渲染时,问题就出现了。它将深度值写入深度缓冲区,然后后面的三角形出现,看到前面已经有东西了,所以它不会被渲染。
您有多种方法可以解决此问题,您可以禁用深度测试、对三角形进行排序以使其按顺序排列或使用深度剥离之类的算法。这些算法中的每一个都有副作用或者只是非常复杂,这就是为什么你在游戏中看不到太多透明度的原因。