openGL中的初学者透明度/不透明度

时间:2011-01-09 05:19:12

标签: opengl transparency blending

我正在浏览OpenGL的NeHe教程......我在第8课(绘制一个混合的立方体)。 http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=08

我想试验并改变一半的面是不透明的,这样总有一个与透明面相对的半透明面,能够旋转立方体......

我稍微更改了代码,整个源代码都在那里:http://pastebin.com/uzfSk2wB 我改变了一些事情:

  • 默认情况下启用混合并将混合函数设置为glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
  • 更改了每张脸的绘制面和颜色的顺序。
    • 我设置深度测试
    • 我画了所有不透明的面孔
    • 我禁用深度测试
    • 我画了所有透明面

现在,很难确切地知道出了什么问题,但它肯定看起来并不正确,我无法识别哪些面部与透明面部相比是不透明的,有时一些面孔似乎不应该被绘制出来...... .etc ...

似乎计算前面的面部与后面相比不会是微不足道的(尽管我确定可能),我希望有一种方法可以做到这一点。

查看我的代码中的错误,或者这是不是正确的方法。

1 个答案:

答案 0 :(得分:4)

如果在绘制透明面之前禁用深度测试,则会绘制它们而不考虑它们的正确z顺序。可能看起来透明面被绘制在所有其他面上。留下深度测试。