質問

それはgl_Positionは、頂点の位置を変更するのと同じように、GLSLの頂点シェーダプログラムを使用して、単一の頂点の色を設定することは可能ですか?

役に立ちましたか?

解決

GLSLのバージョンの以前のバージョン1.30には、頂点シェーダでアクセス可変長あるgl_FrontColorまたはgl_BackColor組み込み関数、への書き込みにしたいです。 // WWW:GLSL 1.10仕様( HTTPで可変長についての記事を読みます.opengl.org /レジストリ/ DOC / GLSLangSpec.Full.1.10.59.pdf に)それらについての詳細を学び、またはGL_ARB_vertex_shader拡張仕様にする。

gl_FrontColorgl_BackColor正規化浮動小数点スカラーを取る4D RGBAベクトルである。

しかし、この意志セットのすべてのの赤だけではなく、一つの頂点に頂点。同じ頂点シェーダは、すべての頂点のために実行されるためです。あなたはglColorPointerglDrawArraysglDrawElementsまたはglDrawRangeElementsと一緒に個々の色、使用glMultiDrawElementsを設定したい場合。 glColorPointerによって設定された頂点の色は、頂点シェーダでgl_Colorとして読み取ることができます。頂点シェーダでgl_Colorは頂点ごとの属性です。

は、頂点シェーダに書いた色を読み取るには、フラグメントシェーダでは、読みビルトインgl_Colorを変えます。完成した断片はgl_FragColorに書き込む必要があります。

頂点シェーダ例:

void main()
{
    gl_FrontColor = gl_Color;
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}

フラグメントシェーダ例:

void main()
{
    gl_FragColor = gl_Color;
}

また、頂点シェーダは、ちょうどOpenGLの固定機能パイプラインのような可変長を設定するために、()関数ftransformを呼び出す。

void main()
{
    ftransform();
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top