Error compiling shader '[object WebGLShader]':ERROR: 0:82: 'sqrt' : no matching overloaded function found
Error compiling shader '[object WebGLShader]':ERROR: 0:82: 'sqrt' : no matching overloaded function found
我正在用 GLSL(着色语言)进行如下计算
int N = 3;
float sigma_H = 5
for(int i = 0 ;i < 3 ; i++){
float sigma_H_i = sigma_H * sqrt(3) * pow(2,(N - (i + 1))) / sqrt(pow(4,N) - 1.0);
}
我得到的错误是
webgl-utils.js:66 *** Error compiling shader '[object WebGLShader]':ERROR: 0:82: 'sqrt' : no matching overloaded function found
ERROR: 0:82: 'pow' : no matching overloaded function found
ERROR: 0:82: 'pow' : no matching overloaded function found
WARNING: 0:82: 'sqrt' : operation result is undefined for the values passed in
ERROR: 0:104: '' : syntax error
我知道错误出在下面的代码块中,因为一旦我删除下面的代码,它就会正确编译
float sigma_H_i = sigma_H * sqrt(3) * pow(2,(N - (i + 1))) / sqrt(pow(4,N) - 1.0);
任何人都可以告诉我为什么我会收到没有 pow 函数的错误,虽然我知道 GLSL 中有 'pow()' 函数来自 OpenGL Shading Language (GLSL) Quick Reference Guide
我正在使用 Google Chrome 浏览器
嗯,您的代码无效。根据 GLSL ES 规范:
When the built-in functions are specified below, where the input arguments (and corresponding output)
can be float
, vec2
, vec3
, or vec4
, genType is used as the argument.
您使用 int
调用它,并且 GLSL 不进行任何隐式转换(与 C 相比),因此正确的语法必须类似于
float sigma_H_i = sigma_H * sqrt(3.0) * pow(2.0,(float(N - (i + 1)))) / sqrt(pow(4.0,float(N)) - 1.0);
我正在用 GLSL(着色语言)进行如下计算
int N = 3;
float sigma_H = 5
for(int i = 0 ;i < 3 ; i++){
float sigma_H_i = sigma_H * sqrt(3) * pow(2,(N - (i + 1))) / sqrt(pow(4,N) - 1.0);
}
我得到的错误是
webgl-utils.js:66 *** Error compiling shader '[object WebGLShader]':ERROR: 0:82: 'sqrt' : no matching overloaded function found
ERROR: 0:82: 'pow' : no matching overloaded function found
ERROR: 0:82: 'pow' : no matching overloaded function found
WARNING: 0:82: 'sqrt' : operation result is undefined for the values passed in
ERROR: 0:104: '' : syntax error
我知道错误出在下面的代码块中,因为一旦我删除下面的代码,它就会正确编译
float sigma_H_i = sigma_H * sqrt(3) * pow(2,(N - (i + 1))) / sqrt(pow(4,N) - 1.0);
任何人都可以告诉我为什么我会收到没有 pow 函数的错误,虽然我知道 GLSL 中有 'pow()' 函数来自 OpenGL Shading Language (GLSL) Quick Reference Guide
我正在使用 Google Chrome 浏览器
嗯,您的代码无效。根据 GLSL ES 规范:
When the built-in functions are specified below, where the input arguments (and corresponding output) can be
float
,vec2
,vec3
, orvec4
, genType is used as the argument.
您使用 int
调用它,并且 GLSL 不进行任何隐式转换(与 C 相比),因此正确的语法必须类似于
float sigma_H_i = sigma_H * sqrt(3.0) * pow(2.0,(float(N - (i + 1)))) / sqrt(pow(4.0,float(N)) - 1.0);