私は OpenGL を学んでいて、簡単なテクスチャリングをしようとしています。したがって、テクスチャ座標を属性として指定します。
頂点シェーダーで奇妙なエラーが発生しました:
#version 150
in vec2 position;
in vec3 color;
in vec2 texcoord;
out vec3 Color;
out vec2 Texcoord;
void main()
{
Color = color;
Texcoord = vec2 (1.0, 0.5); /* just for debugging hardcode texcords */
gl_Position = vec4( position, 0.0, 1.0 );
}
シェーダーは正常にコンパイルされますが、シェーダーが属するプログラムをリンクしようとすると、glGetProgramInfoLog() ログに次のように表示されます。
エラー: コンパイルされた頂点シェーダーが壊れていました。
外すと
in vec2 texcoord;
エラーが消えます。属性にどのように名前を付けるかは問題ではありません。3 つ目を追加するとすぐに、このエラーが発生します。
コンパイル エラーはありません。このリンクエラーだけです。
OS X 10.8.3 で OpenGL 3.2 コア コンテキストを使用しています。GLEWを使用しています。
アップデート:
これでリンクできます:
#version 150
in vec2 position;
in vec3 color;
in vec2 texcoord;
out vec3 Color;
out vec2 Texcoord;
void main()
{
Color = color;
gl_Position = vec4( position, 0.0, 1.0 );
}
しかし、追加するとすぐに
Texcoord = texcoord;
メイン関数に対してシェーダーが破損します。私は絶望的です。これは何ですか?