2016-07-01 65 views
0

某些客户端未能初始化webGL程序。我赶上了错误与WebGL错误:并非所有控制路径都返回值

gl.linkProgram(program); 

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

我得到的日志是

Unable to initialize the shader program: 
C:\fakepath(72,30-133): error X3507: '_directionToColor': 
    Not all control paths return a value 

我已经无法重现我的电脑上此错误。有没有人有什么错误的想法?我很高兴,如果这有助于分享更多的代码:)

+1

好吧,它看起来像着色器“_directionToColor”是责怪。 72行,如果我没有记错的话。你能分享该着色器的源代码吗? –

+0

我会把代码以易理解的方式分享,但我并没有在任何地方编写'_directionToColor',我不知道'_directionToColor'与谷歌都没有关系。 – Guig

+0

搜索所有文件的“_directionToColor” 。我认为这是你的着色器代码中的某个方法。 –

回答

1

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

if (...) { 
    return ... 
} else if (...) { 
    return ... 
} 

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

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

我在我的代码中找不到_directionToColor,因为函数名是directionToColor,不知怎的,下划线被添加了。

相关问题