Alpha混合,透明和z排序

时间:2014-11-15 08:54:03

标签: opengl 3d transparency alphablending z-order

我在一个项目中使用alpha混合进行了一些测试,但我并不了解。

在我的测试中,我做过类似的事情,一切都很好

  • 首先绘制蓝框(深度测试:true,混合alpha :无,颜色:1,1,1,1)< / LI>
  • 画左马里奥(深度测试:假,混合alpha :true,颜色:1,1,1,0.8)
  • 绘制红色框(深度测试:true,混合alpha :无,颜色:1,1,1,1)
  • 画右马里奥(深度测试:false,混合alpha :true,颜色:1,1,1,0.8)

enter image description here

每个教程都说我们应该:

  • 首先绘制不透明物体
  • 将透明对象重新排序,然后绘制它们。

结果如下:

enter image description here

所以,我不确定它是如何工作的/错误的(I've read this document)。

谢谢!

1 个答案:

答案 0 :(得分:1)

您通常会为半透明对象禁用深度写入例如 glDepthMask (GL_FALSE)),但深度 test 本身不是你会禁用。

您需要针对不透明对象生成的深度值进行测试才能使其正常运行,否则您必须对 两者 对不透明和半透明对象进行排序(这是正是你最初的所作所为。)