【发布时间】:2011-12-03 16:09:58
【问题描述】:
我正在 GLSL 中创建以下着色器,其目的是根据 light_text 的 Alpha 通道混合 2 个纹理。不幸的是,alpha 通道总是设置为 1(虽然我确信我的原始纹理的值从 0 到 1 不等) 我在另一个 SO 问题中看到我需要将标志 GL_RGBA 放在某个地方,因为它默认位于 GL_RGB ,但是在我的示例中我应该把它放在哪里? 这是代码:
const vec3 lumCoeff = vec3(0.2125, 0.7154, 0.0721);
uniform sampler2D world_tex;
uniform sampler2D light_tex;
uniform float Alpha;
uniform vec3 NewColor;
void main()
{
vec3 curColor = vec3(texture2D(world_tex, gl_TexCoord[0].xy ));
vec3 lightColor = vec3(texture2D(light_tex, gl_TexCoord[0].xy ));
float graylvl = dot(curColor , lumCoeff);
vec3 appliedLight = lightColor + curColor;
float coeff = texture2D(light_tex, gl_TexCoord[0].xy ).a;// <--- equals 1 always
vec3 color_saturated = mix(vec3(graylvl), curColor, Alpha);
gl_FragColor = vec4( mix(color_saturated + NewColor, appliedLight, coeff) , 1.0);
}
谢谢
【问题讨论】: