6

我已经找到了 5349574673 个关于 alpha 混合的页面,但我仍然无法得到想要的结果。我正在尝试使用 opengl 使 gif/png 文件正确显示(透明/半透明)。

这是我的初始化位:

glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); //I've seen this on most tutorials
glDisable(GL_DEPTH_TEST); //it's a 2D game
//...loading matrices and so on

我确信图像具有透明度,并且加载正确。
glBlendFunc(GL_ONE, GL_ONE); 工作,但我不知道它是否在 alpha 通道上做任何事情,因为它会呈现为黑色 => 混合工作
glColor4f(1f,1f,1f,0.3f); 工作正常,我可以画透明的东西

PS 我正在使用这个例子http://lwjgl.org/wiki/index.php?title=Space_Invaders_Example_Game来学习

编辑 我使用了用 GIMP 和其他纹理加载器编码的其他纹理,现在它工作正常。

4

1 回答 1

5

您的混合设置是正确的。然而,为了使混合工作,纹理必须包含一个 alpha 通道,当然是正确的值。然后图像加载过程必须保存 alpha 通道数据。我们可以看看图像加载和纹理生成代码吗?

于 2011-10-25T08:14:03.187 回答