0

現在、1つのオブジェクトに2つのテクスチャが適用されています。最終的にはさらにいくつか追加される予定ですが、現在の2つを正しく機能させるのに問題があります。

現時点では、2つの画像を足し合わせてfragcolorを設定しています。文字通り私がしているのは次のようなものです:

gl_FragColor = texture1 + texture2;

そもそもそのようなことをするためのより良い方法があると確信していますが、それはまた、画像が重なっている場所が(明らかに)一緒に追加されるという問題を引き起こします。これは私が現在のプロジェクトでやろうとしていることではありません。

これが単に私のfragColorだけの問題であるかどうか、このようなことを行うためのGLSLの組み込み関数があるのか​​、それとも他の方法で事前に画像を組み合わせるようなことをする必要があるのか​​はわかりません。

編集:: 私が意味した色の追加の例:http://i.imgur.com/0vH4F.png

4

1 に答える 1

2

通常のブレンドではなく、シェーダーで2つのテクスチャをブレンドしたいと思います。このようなものはうまくいくはずだと私は信じています-仮定を立てれば、おそらくこれを単純化することができます。

gl_FragColor = backgroundcolor;
gl_FragColor = (gl_FragColor*(1-texture1.a))+(texture1*texture1.a);
gl_FragColor = (gl_FragColor*(1-texture2.a))+(texture2*texture2.a);

編集:

ここでの最終的な答えは、フラグメントシェーダーでのブレンドではなく、通常のブレンドであることになりました。

于 2011-08-29T11:59:58.420 に答える