解析GLSL错误消息

kay*_*ahr 2 opengl glsl

当我编译损坏的GLSL着色器时,NVidia驱动程序会给我以下错误消息:

0(102) : error C1008: undefined variable "vec"
Run Code Online (Sandbox Code Playgroud)

我知道方括号内的数字是行号。我想知道0错误消息开头的含义是什么。我希望传递给源数组中的索引,glShaderSource但事实并非如此。总是这样0。有人知道第一个数字是什么意思吗?

而且错误消息格式有一些官方标准,因此我可以从中解析行号,或者其他OpenGL实现是否使用其他格式?我只能访问NVidia硬件,因此无法检查使用AMD或Intel硬件时的错误消息。

kel*_*tar 5

这是一个文件名,您无法通过GL API进行指定,因此为0。

您可以#line num filename直接在着色器代码中使用预处理器命令进行设置。如果您的着色器是#include通过外部预处理器使用s 从许多文件构造的(在将源传递给GL之前),可能会有所帮助。

消息没有标准。每个人都想做的事。