変更せずに頂点シェーダーからフラグメントシェーダーにデータを転送する方法は? 頂点ピクセルにこの色があることを伝える必要があります。頂点シェーダーでしか得られないこの色。
2 に答える
各フラグメントは複数の頂点によって「影響を受ける」ため (レンダリングしていない場合GL_POINTS
)、可変を使用する必要があるため、ライン/ポリゴン全体でそれらを補間する必要があります。GLSL の最近のバージョンでは、他の頂点からの値を無視して、プリミティブ全体で値を補間しないフラット シェーディング補間を指定できます。
あなたがやりたいことは、頂点に対応するピクセルだけを別の色でレンダリングすることだと思いますが、それは正しいですか? その場合、それは簡単ではありません。最初に塗りつぶされたポリゴンをレンダリングしてから、GL_POINTS
. その時点では、各フラグメントが 1 つの頂点の影響を受けるため、可変変数は補間されません。
GLSL に関する優れたチュートリアルは次のとおりです。 NeHe GLSL チュートリアル
頂点シェーダーとフラグメント シェーダーの間でデータを共有する場合は、組み込み型のいずれかを使用します。たとえば、gl_Color
頂点シェーダーによって計算された色をフラグメント シェーダーに渡したい場合は、次の行でフラグメント シェーダーを作成します。gl_FragColor = gl_Color
gl_Color
頂点シェーダーによって書き込まれた色から自動的に設定されます。gl_FrontColor
のような組み込み変数の 1 つ、またはそのピアの 1つを設定することにより、頂点シェーダーから色を書き込みますgl_BackColor
。