2011-10-25 173 views
6

我发现了关于alpha混合的5349574673页,但仍然无法获得所需的结果。 我想使用opengl正确显示gif/png文件(使用透明/半透明)。OpenGL alpha混合

这里是我的初始化位:

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);工作正常,我可以画透明的东西

P.S.我用这个例子http://lwjgl.org/wiki/index.php?title=Space_Invaders_Example_Game学习

编辑 我使用由与GIMP和其它质地装载机编码其他纹理,现在工作得很好。

+0

发布图像。 init代码看起来不错。 –

回答

5

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