2

如果我在包含 NVIDIA 显卡的台式计算机上编译 GLSL 着色器,则错误消息中的行号错误。它似乎总是实际的行号加三。在包含 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