0

頂点シェーダーからフラグメント シェーダーに値を渡したい。これが今のところ私がしていることです。

#version 150

in vec2 texcoord;
out vec2 f_texcoord;

void main()
{
    f_texcoord = texcoord;
}

texcoord2 つの変数名を定義せずに同じ動作に到達しf_texcoord、最終的に行を削除するにはどうすればよいf_texcoord = texcoord;ですか?

4

1 に答える 1

2

GLSL では、頂点シェーダーからフラグメント シェーダーに属性を渡す唯一の方法は、現在行っている方法とまったく同じです。特に、テクスチャ座標は通常、頂点ごとに (ほとんどの場合、位置または法線と共に) 変化するためです。

uniforms色やライトの位置などの他のプロパティについては、頂点からフラグメントへの入出力ペアとして渡すことなく、両方のシェーダーで使用できる変数を追加することで、代わりに「グローバル」変数を宣言できます。ユニフォームは通常、頂点ごとに値を変更するのではなく、頂点のバッチで動作する定数です。

于 2013-01-04T10:39:41.707 に答える