-2

我写了这段代码:

"    vec3 col1 = texture2D(uDiffuseTexture, vec2(vTextureCoord.x, vTextureCoord.y + time)).rgb;\n" +
"    float a1=1.0;\n"+  
"    vec3 col2 = texture2D(uNormalTexture, vec2(vTextureCoord.x + time, vTextureCoord.y)).rgb;\n" +
"    float a2=uAlpha;\n"+  

顺便一提:

和:gl_FragColor = vec4(col1+col2, a1+a2);

阿尔法不工作......为什么?总是一样,为什么?

我的uAlpha变量是一个uniform,从 0.1 变为 1.0

4

1 回答 1

2

id 喜欢用 100% 绘制 image1,用 0-100% 绘制 image2

目前,您正在使用加法混合 (col1+col2) 混合您的两个图像,而没有考虑uAlpha混合两个图像的均匀性。

我想你想要实现的是在 image1 上混合 image2,使用 uAlpha 作为不透明度。

vec3 col1 = texture2D(uDiffuseTexture, vec2(vTextureCoord.x, vTextureCoord.y + time)).rgb;
vec3 col2 = texture2D(uNormalTexture, vec2(vTextureCoord.x + time, vTextureCoord.y)).rgb;
float a2=uAlpha;
vec3 result = mix(col1, col2, a2);   // this combines the two texture colors
gl_FragColor = vec4(result, 1.0);
于 2012-06-05T08:24:57.420 回答