-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変数は、uniform0.1から1.0に変化します

4

1 に答える 1

2

image1 を 100% で描画し、image2 を 0-100% で描画したい

uAlpha現在、2 つの画像を均一に混合することを考慮せずに、2 つの画像を加算ブレンディング (col1+col2) で混合しています。

あなたが達成しようとしているのは、uAlpha を不透明度として使用して、image1 に image2 をブレンドすることだと思います。

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 に答える