我绘制两个纹理,首先是纹理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);
答案 0 :(得分:3)
您是使用2个绘制调用渲染它还是使用多纹理?如果您正在进行2次绘制调用,则关闭深度测试,因为第二个纹理将始终无法进行深度测试(因为它不在多边形的前面与它相同的位置),因此不会被绘制。
如果您使用的是多纹理,那么问题可能在于您如何设置alpha。
我真的怀疑它是前者。