1

我画了两个纹理,首先是纹理 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);
4

1 回答 1

3

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

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

我真的怀疑是前者。

于 2012-12-16T12:25:42.943 回答