OpenGL Alpha 混合

标签 opengl alphablending lwjgl

我已经找到了 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 channel 上执行任何操作,因为它会渲染为黑色 => 混合工作
glColor4f(1f,1f,1f,0.3f);工作正常,我可以绘制透明的东西

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

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

最佳答案

您的混合设置是正确的。然而,要使混合正常工作,纹理必须包含 Alpha channel ,当然,其值必须正确。然后图像加载过程必须保留 Alpha channel 数据。我们可以看一下图像加载和纹理生成代码吗?

关于OpenGL Alpha 混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7885203/

相关文章:

java - 有没有更准确的LWJGL计时器

c++ - 使用 gdi+ 绘制 hdc 是否会导致预乘 alpha 位图?

opengl-es - 为什么 OpenGL 混合在 HTC Desire 上不起作用?

c++ - 将两个图像堆栈的非幂加载到 3d 纹理 OpenGL C++

c++ - 在缓冲区对象上运行并通过着色器更改它的数据?

math - 如何通过指定alpha混合量来计算RGB颜色?

JAVA - LWJGL - 纹理旋转

java - LWJGL Display.update() 太慢 - 驱动程序问题?

opengl - Sampler2D 存储什么?

c++ - 使用 OpenGL 创建三角形