2

我正在阅读 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);
  • 更改了为每个面绘制面和颜色的顺序。
    • 我设置了深度测试
    • 我画了所有不透明的脸
    • 我禁用深度测试
    • 我画出所有透明的脸

现在,很难确切地说出了什么问题,但它肯定看起来不正确,与透明的相比,我无法识别出哪些脸是不透明的,有时有些脸在应该绘制的时候似乎没有被绘制……等等。 ..

似乎计算正面与背面相比的面孔并非易事(尽管我确信可能),我希望有一种方法不需要这样做。

寻找我的代码中有什么问题,或者这是否不是首先做的正确方法。

4

1 回答 1

4

如果在绘制透明面之前禁用深度测试,那么将在不考虑其正确 z 顺序的情况下绘制它们。它可能看起来像透明面被绘制在所有其他面上。开启深度测试。

于 2011-01-09T06:04:17.347 回答