NVIDIA グラフィックス カードを搭載したデスクトップ コンピュータで GLSL シェーダをコンパイルすると、エラー メッセージの行番号が間違っています。常に実際の行番号に 3 を加えたように見えます。ATI グラフィックス カードを搭載した私のラップトップ コンピュータでは、行番号は正しいです。
たとえば、次の単純な GLSL フラグメント シェーダーを見てみましょう。6行目にエラーが含まれています。ここでtexture2D
は、二重のtで書かれています。
uniform sampler2D dirt;
varying vec3 pos;
void main()
{
vec3 d = ttexture2D(dirt, pos.xy).rgb;
gl_FragColor = vec4(d, 1.0);
}
NVIDIA コンパイラで次のエラー メッセージが表示されます。
0(9) : error C1008: undefined variable "ttexture2D"
ATI コンパイラは正しい行番号を表示します。
Fragment shader failed to compile with the following errors:
ERROR: 1:6: error(#202) No matching overloaded function found ttexture2D
ERROR: 1:6: error(#216) Vector field selection out of range 'rgb'
ERROR: error(#273) 2 compilation errors. No code generated
NVIDIA コンパイラが間違った行番号を表示する理由はありますか?
編集: NVIDIA ドライバー バージョン 331.58 を使用しています