Glsl WebGL-未找到匹配的重载函数

Glsl WebGL-未找到匹配的重载函数,glsl,webgl,Glsl,Webgl,我的html文件上有一个WebGL片段着色器,运行良好,但调用前5个vec2函数时除外 vec2 subCalc(vec2 z1, vec2 z2){ return vec2((z1.x - z2.x), (z1.y - z2.x)); } 我得到这个错误: 这很奇怪,因为我使用了vec4,例如“HSVtoRGB”,代码运行良好 完全着色器 精密中泵浮子; 可变vec4实际值; 均匀vec2阻力; 均匀浮点函数; 均匀浮动n; 均匀vec2中心; 均匀浮标; 均匀浮动试验; ve

我的html文件上有一个WebGL片段着色器,运行良好,但调用前5个vec2函数时除外

vec2 subCalc(vec2 z1, vec2 z2){
    return vec2((z1.x - z2.x), (z1.y - z2.x));
}
我得到这个错误:

这很奇怪,因为我使用了vec4,例如“HSVtoRGB”,代码运行良好

完全着色器


精密中泵浮子;
可变vec4实际值;
均匀vec2阻力;
均匀浮点函数;
均匀浮动n;
均匀vec2中心;
均匀浮标;
均匀浮动试验;
vec2子LC(vec2 z1,vec2 z2){
返回vec2((z1.x-z2.x),(z1.y-z2.x));
}
vec2表达式(vec2 z){
返回vec2(exp(z.x)*cos(z.y),exp(z.x)*sin(z.y));
}
vec2 divCalc(vec2 z1,vec2 z2){
返回向量2((z1.x*z2.x+z1.y*z2.y)/(z2.x*z2.x+z2.y*z2.y),(z1.y*z2.x-z1.x*z2.y)/(z2.x*z2.x+z2*z2.y));
}
vec2 multCalc(vec2 z1,vec2 z2){
返回vec2((z1.x*z2.x-z1.y*z2.y),(z1.y*z2.x+z1.x*z2.y));
}
vec2-sumCalc(vec2-z1,vec2-z2){
返回向量2((z1.x+z2.x),(z1.y+z2.x));
}
vec4 HSVtoRGB(浮子h、浮子s、浮子v)
{
//在HSV和RGB颜色模型之间转换。
//取自http://www.cs.rit.edu/~ncs/color/t_convert.html并为GLSL重写
int i;
浮点数f,p,q,t;
vec4-RGB;
如果(s==0.0)
{
//无色(灰色)
RGB.x=RGB.y=RGB.z=v;
RGB.w=1.0;
返回RGB;
}
h/=60.0;//扇区0到5
i=int(楼层(h));
f=h-浮点数(i);//h的分形部分
p=v*(1.0-s);
q=v*(1.0-s*f);
t=v*(1.0-s*(1.0-f));
如果(i==0)
{
RGB.x=v;
RGB.y=t;
RGB.z=p;
}
else如果(i==1)
{
RGB.x=q;
RGB.y=v;
RGB.z=p;
}
else如果(i==2)
{
RGB.x=p;
RGB.y=v;
RGB.z=t;
}
else如果(i==3)
{
RGB.x=p;
RGB.y=q;
RGB.z=v;
}
else如果(i==4)
{
RGB.x=t;
RGB.y=p;
RGB.z=v;
}
else如果(i==5)
{
RGB.x=v;
RGB.y=p;
RGB.z=q;
}
其他的
{
RGB.x=1.0;
RGB.y=1.0;
RGB.z=1.0;
}
RGB.w=1.0;
返回RGB;
}
vec4第二个案例(vec4 posi){
float multX=((posi.x*posi.x)-(posi.y*posi.y));
float multY=((posi.y*posi.x)+(posi.x*posi.y));
float newX=multX;
float newY=multY;
浮点数r=功率(sqrt((newX)*(newX)+(newY)*(newY)),n);
对于(float i=0.0;i=n){break;}
newX=((newX*posi.x)-(newY*posi.y));
newY=((newY*posi.x)+(newX*posi.y));
}
浮动h=(atan(newY/newX));
浮点数s=1.0;
浮点数v=分形((log2(r));
h=(h*180.0)/(3.14);
如果(h=0.0&&newY<0.0)
h=360.0-h;
返回HSVtoRGB(h、s、v);
}
vec4第三种酶(vec4 posi){
vec2 divi=vec2((100.0*posi.x+0.0*posi.y)/(posi.x*posi.x+posi.y*posi.y),(0.0*posi.x-100.0*posi.y)/(posi.x*posi.x+posi.y*posi.y));
vec2 exp=vec2(exp(divi.x)*cos(divi.y),exp(divi.x)*sin(divi.y));
浮点数r=pow(sqrt((exp.x)*(exp.x)+(exp.y)*(exp.y)),n);
浮动h=(atan((exp.y/exp.x));
浮点数s=1.0;
浮点数v=分形((log2(r));
h=(h*180.0)/(3.14);
如果(h=0.0&&exp.y<0.0)
h=360.0-h;
返回HSVtoRGB(h、s、v);
}
vec4 forthCase(vec4 posi){
vec2 divi=vec2((100.0*posi.x+0.0*posi.y)/(posi.x*posi.x+posi.y*posi.y),(0.0*posi.x-100.0*posi.y)/(posi.x*posi.x+posi.y*posi.y));
vec2 exp=vec2(exp(divi.x)*cos(divi.y),exp(divi.x)*sin(divi.y));
浮点数r=pow(sqrt((exp.x)*(exp.x)+(exp.y)*(exp.y)),n);
浮动h=(atan((exp.y/exp.x))*3.0;
浮点数s=1.0;
浮点数v=分形((log2(r));
h=(h*180.0)/(3.14);
如果(h=0.0&&exp.y<0.0)
h=360.0-h;
返回HSVtoRGB(h、s、v);
}
void main(){
vec4最终位置=实际位置;
finalPosition.x+=拖动.x;
finalPosition.y+=拖动.y;
最终位置x*=试验;
最终位置y*=试验;
浮点r=sqrt((finalPosition.x)*(finalPosition.x)+(finalPosition.y)*(finalPosition.y));
浮点h=atan((finalPosition.y/finalPosition.x));
浮点数s=1.0;
浮点数v=分形((log2(r));
h=(h*180.0)/(3.14);
if(h0.0)
h=180.0-h;
if(finalPosition.x<0.0&&finalPosition.y<0.0)
h=180.0+h;
if(finalPosition.x>0.0&&finalPosition.y<0.0)
h=360.0-h;
vec2 firstMemb=expCalc(最终位置);
如果(func==1.0){
gl_FragColor=HSVtoRGB(h,s,v);
}else if(func==2.0){
gl_FragColor=第二种情况(最终位置);
}else if(func==3.0){
gl_FragColor=第三种情况(最终位置);
}
}
这一行

  vec2 firstMemb = expCalc(finalPosition);

试图将
vec4
传递给接受
vec2

的函数不应
vec2 firstMemb=expCalc(vec2(finalPosition))工作?