我想知道是否有一种常见的方法来获取GLSL编译器错误的行号。 起初我以为我可以解析glGetInfoLogARB,但后来我读到它的输出没有标准化。
答案 0 :(得分:5)
它不是标准化的,但在个别供应商中它或多或少是。
<Shader String Index>:<Line Number>(<Character Number>): <warning|error|...>:
虽然不完美,但如果您需要解析行号的信息日志,您可以采取的方法是根据GL_VENDOR
字符串预处理输入。信息日志通常用于人工解释,所以我不确定这是多么值得付出的努力。
说到非标准事物,glGetInfoLogARB (...)
过时(它只存在于GL_ARB_shader_objects
中)。
当GLSL在GL 2.0中成为核心时,该函数分别为glGetShaderInfoLog (...)
和glGetProgramInfoLog (...)
分别用于编译器和链接器信息。为了便携,您不应该使用旧的ARB扩展;将GL 2.0作为最低版本,并使用核心GLSL。