我正在尝试使用片段着色器调整纹理颜色。我的片段着色器非常简单:
uniform sampler2D sampler;
void main() {
vec4 tex = texture2D ( sampler, uvVarying );
gl_FragColor = vec4(tex.r, tex.g, tex.b, tex.a);
}
这按预期绘制了我的狗纹理:
如果我然后将着色器更改为
gl_FragColor = vec4(tex.r, tex.g, tex.b, 1.0);
结果是我所期望的,透明度信息丢失了:
但如果我改为将其设置为:
gl_FragColor = vec4(tex.r, tex.g, tex.b, 0.0);
我原以为它会完全消失,但我得到了:
到底是怎么回事??
对于我最初的问题:我想在我的纹理中添加一点红色调:
gl_FragColor = vec4(tex.r + 0.5, tex.g, tex.b, tex.a);
现在,我期待它具有与原始纹理相同的透明度信息,但我得到了这个:
我在这里想念什么。纹理使用引擎的默认混合,即src = GL_ONE, dst = GL_ONE_MINUS_SRC_ALPHA
.