Glsl 编译着色器时出错';[对象WebGLShader]';:错误:0:82:';sqrt';:找不到匹配的重载函数

Glsl 编译着色器时出错';[对象WebGLShader]';:错误:0:82:';sqrt';:找不到匹配的重载函数,glsl,webgl,glsles,Glsl,Webgl,Glsles,我正在用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); } 我知道错误在下面的代码块中,因为只要我删除下面的行,它就会正确编译 float sigma_H_i = sigma_H * sqrt(3) * pow

我正在用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);
}
我知道错误在下面的代码块中,因为只要我删除下面的行,它就会正确编译

 float sigma_H_i = sigma_H * sqrt(3) * pow(2,(N - (i + 1))) / sqrt(pow(4,N) - 1.0);
有谁能告诉我为什么我会遇到这样一个错误:虽然我从中知道GLSL中有“pow()”函数,但没有pow函数


我正在使用Google Chrome浏览器,你的代码无效。根据GLSL ES规范:

当在下面指定内置函数时,其中输入参数(和相应的输出) 可以是
float
vec2
vec3
vec4
,genType用作参数

您使用
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 ES规范:

当在下面指定内置函数时,其中输入参数(和相应的输出) 可以是
float
vec2
vec3
vec4
,genType用作参数

您使用
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);