WebGL着色器编译错误消息的数字是什么意思?

时间:2018-01-09 05:06:55

标签: glsl webgl

例如,

ERROR: 0:137: 'blend2' : no matching overloaded function found
ERROR: 0:137: '=' : dimension mismatch
ERROR: 0:137: '=' : cannot convert from 'const mediump float' to 'highp 3-component vector of float'

0中的0:137是什么? 1370:137的内容是什么? 为什么所有错误消息都以0:开头?为什么不是1:2:

注意我不是在问为什么我会收到这些错误。如果有的话,首选参考一些官方规范或文档的答案。我正在使用Chrome 63.0.3239.132。

1 个答案:

答案 0 :(得分:5)

  

0:137中的0是什么?

它是产生错误的着色器字符串的索引。在常规OpenGL中,glShaderSource允许您提供多个字符串。它们被编译为好像它们被连接在一起一样。但这意味着错误消息必须识别着色器中负责该错误的特定字符串。第一个数字是提供给glShaderSource的字符串数组的从零开始的索引。

当然,WebGL的等效gl.shaderSource函数不允许您提供多个着色器字符串。因此,如果WebGL实现最终直接调用OpenGL或OpenGL ES实现,那么OpenGL产生的错误将包含字符串索引,即使它们在技术上不需要它。

  

0:137中的137是什么?

这是发生错误的行号。