WebGL错误:并非所有控制路径都返回值

时间:2016-07-01 21:23:44

标签: debugging webgl shader

我的一些客户未能初始化webGL程序。我正在用

抓住错误
${a(())}

我得到的日志是

gl.linkProgram(program);

if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
  throw new Error("Unable to initialize the shader program: " + gl.getProgramInfoLog(program));
}

我无法在计算机上重现此错误。有没有人知道出了什么问题?如果有帮助,我很乐意分享更多代码:)

1 个答案:

答案 0 :(得分:1)

Not all control paths return a value是一个错误,如果您的函数看起来像

,编译器将抛出该错误
if (...) {
  return ...
} else if (...) {
  return ...
}

即使始终满足这两个条件中的一个,编译器也不够聪明,无法知道并抛出错误。因此,您必须将else if更改为else或添加第三个返回语句,实际上永远不会使用该语句。

我发现在某些环境中,着色器编译得很好,而在其他一些(windows)中它会失败。

我在代码中找不到_directionToColor,因为函数名称为directionToColor,并且以某种方式添加了下划线。