2015-05-06 182 views
-5

我用透明部件绘制纹理。袋子纹理OpenGL

从侧面透明部分画好。

Good result from one side.

但是从另一侧,所述透明部分是黑色的。

Bad result from the other side.

为什么出现这种情况?

+0

加载纹理的代码:http://pastebin.com/tAXAk0Rq 绘制立方体的代码:http://pastebin.com/tAXAk0Rq – Lawliet

+0

你是什么意思*“一个和所有的边上的纹理相同。”*? – Axalo

+0

我使用一个纹理的所有面立方体 – Lawliet

回答

1

由于Z缓冲区处理不好透明度,您可能需要执行Transparency Sorting

就是这样,透明像素填充Z缓冲区。

  • 你先画出最近矩形:透明部分是与背景色(黑色当前)绘制
  • 然后你画出最远的矩形:重叠部分是后面并且z-buffer测试没有通过,这里没有画出任何东西,像素保持黑色。

就你而言,它看起来像透明部分是完全透明的(alpha == 0)。您可以使用Alpha Test来避免绘制完全透明的像素(并保持Z缓冲区为空)。

+0

非常感谢 – Lawliet