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

问题描述 投票:1回答:1

例如,

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'

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

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

glsl webgl
1个回答
5
投票

0:137中的0是多少?

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

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

什么是137:0:137?

它是发生错误的行号。

© www.soinside.com 2019 - 2024. All rights reserved.