2

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 を使用しています

4

0 に答える 0