0

テクスチャ マッピングと頂点カラーリングを実行できる GLSL Fragment Shader を作成したいと考えています。1 つのシェーダーで両方を行うことは可能ですか?

現時点では、これを行うことができます:

gl_FragColor = texture2D(tex, gl_TexCoord[0].st);

これにより、テクスチャ付きの頂点が描画されますが、色付きの頂点は描画されません。(これは次のようになります: http://www.tiikoni.com/tis/view/?id=124eb69 )

私もこれを行うことができます:

gl_FragColor = gl_Color;

これにより、色付きの頂点が描画されますが、テクスチャ付きの頂点は描画されません。(これは次のようになります: http://www.tiikoni.com/tis/view/?id=5bcd838 )

私がこれを行う場合:

gl_FragColor = texture2D(tex, gl_TexCoord[0].st) * gl_Color;(最初のコード スニペットのように見えます)

テクスチャ付きの頂点だけが描画されます...これが私の問題です。

4

1 に答える 1

1

私が期待しているのは、最後のコードスニペットに、テクスチャ化された頂点とテクスチャ化されていない頂点がすべて表示されることです。

あなたはそれを期待するべきではありません。

「テクスチャのある頂点」や「テクスチャのない頂点」などはありません。その色が何であれ、だけがあります。これがシェーダーの要点です。任意のコードを使用して、必要に応じて色を計算します。

テクスチャフェッチの結果に頂点ごとに補間された色を掛けて、色を計算しています。結果は2つの色の組み合わせになります。つまり、それらの製品です。したがって、結果の色は元のテクスチャのようになります。

于 2012-10-05T16:52:03.913 に答える