【发布时间】:2012-12-06 00:40:25
【问题描述】:
嗯,我正在修改一个 2D 开源游戏客户端,我试图为游戏对象纹理添加透明度。它已经读取并加载了 alpha 通道。纹理已经加载到 openGL 中,格式和内部格式为 RGBA。
问题是,当像素的 alpha 通道低于 255(或 1)时,它就不会显示在屏幕上。它没有忽略 alpha 通道并且只显示 RGB,它隐藏了像素。 该客户端使用 OpenGL 和着色器进行绘图。
我已经通过调用glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA )、glDisable(GL_DEPTH_TEST) 和glColorMask(1,1,1,1) 启用了混合。
【问题讨论】:
-
您是否启用了 alpha 测试而不是 alpha 混合?
-
感谢您的评论。我已经在整个源代码中进行了搜索,但没有找到任何支持 alpha 测试的内容。
-
着色器怎么样 - 他们会杀死/丢弃吗?
-
没有。着色器的代码是:
-
统一浮动u_Time;统一的sampler2D u_Tex0;变化 vec2 v_TexCoord; void main() { gl_FragColor = texture2D(u_Tex0, v_TexCoord); }