当我编译损坏的GLSL着色器时,NVidia驱动程序会给我以下错误消息:
0(102) : error C1008: undefined variable "vec"
Run Code Online (Sandbox Code Playgroud)
我知道方括号内的数字是行号。我想知道0错误消息开头的含义是什么。我希望传递给源数组中的索引,glShaderSource但事实并非如此。总是这样0。有人知道第一个数字是什么意思吗?
而且错误消息格式有一些官方标准,因此我可以从中解析行号,或者其他OpenGL实现是否使用其他格式?我只能访问NVidia硬件,因此无法检查使用AMD或Intel硬件时的错误消息。
这是一个文件名,您无法通过GL API进行指定,因此为0。
您可以#line num filename直接在着色器代码中使用预处理器命令进行设置。如果您的着色器是#include通过外部预处理器使用s 从许多文件构造的(在将源传递给GL之前),可能会有所帮助。
消息没有标准。每个人都想做的事。