質問
次のような単純なフラグメントシェーダコードは、ログに情報価値のメッセージを私に残して、失敗します。
ERROR: 0:1: 'gl_Color' : syntax error syntax error
void main()
{
vec4 myOutputColor(gl_Color);
gl_FragColor = myOutputColor;
}
以下のいずれかが機能している間ます:
void main()
{
glFragColor = gl_Color;
}
これはGL_COLORがあるの Lighthouse3Dのチュートリアルのように、私の心をboggles vec4であることを述べました。なぜ私は別のvec4に割り当てることができません?
解決
通常の割り当てを試してみてください。このように:
void main()
{
vec4 myOutputColor = gl_Color;
gl_FragColor = myOutputColor;
}
編集ます:
第二の答えは本当に同じように正しいですが、両方とも同じタイプであることから、vec4()コンストラクタを使用する必要はありません。
:あなたが持っていた場合、あなたが書くことができるタプル(R、G、B、W)を言うことができますvec4 myOutputColor = vec4(r, g, b, w);
または
// assuming myRgbColor is a vec3
vec4 myOutputColor = vec4(myRgbColor, w);
など
他のヒント
Aparrentlyあなたは少し異なる構文を使用する必要があります。
(参照)
vec4 myOutputColor = vec4(gl_Color);
gl_FragColor = myOutputColor;
あなたのサンプルとは異なり、これは私のmashineに罰金コンパイルする(Windows、Nvidiaのカード)
所属していません StackOverflow