不能使纹理透明

时间:2012-12-16 12:23:05

标签: c opengl

我绘制两个纹理,首先是纹理A,然后是纹理B.我总是看起来A总是在b之上,即使纹理A的某些部分是完全透明的,它也只显示屏幕的背景颜色。此处的背景颜色表示我使用glClearColor设置的颜色。然而,我改变了我的代码和图片,纹理的透明部分始终具有相同的背景颜色。

这是我的着色器语言源代码。

precision mediump float;
uniform sampler2D u_sampler; 
varying vec2 v_TexCoord;
void main() {
    gl_FragColor = texture2D(u_sampler, v_TexCoord);
}

我已经启用了混合功能。

glEnable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

1 个答案:

答案 0 :(得分:3)

您是使用2个绘制调用渲染它还是使用多纹理?如果您正在进行2次绘制调用,则关闭深度测试,因为第二个纹理将始终无法进行深度测试(因为它不在多边形的前面与它相同的位置),因此不会被绘制。

如果您使用的是多纹理,那么问题可能在于您如何设置alpha。

我真的怀疑它是前者。