glslc中的Crptic错误:语法错误,意外的浮点常量,应为右参数
我在一些着色器中到处使用此复杂类型,最后,我得到以下错误:glslc中的Crptic错误:语法错误,意外的浮点常量,应为右参数,glsl,Glsl,我在一些着色器中到处使用此复杂类型,最后,我得到以下错误: glslangValidator -S comp help.glsl help.glsl:14:错误:“”:语法错误,意外的FLOATCONSTANT,应为右参数 生成1个错误 这里有一台复制机: #version 460 struct cmplx { float re; float im; }; cmplx fresnel_cont_frac(float ax) { const float pi = 3.1415
glslangValidator -S comp help.glsl
help.glsl:14:错误:“”:语法错误,意外的FLOATCONSTANT,应为右参数
生成1个错误
这里有一台复制机:
#version 460
struct cmplx {
float re;
float im;
};
cmplx
fresnel_cont_frac(float ax)
{
const float pi = 3.1415926535897932384626433832795;
const float pix2 = pi * ax * ax;
cmplx b(1.0, -pix2);
return b;
}
放大是
b
的构造函数。我被难住了。您没有为cmplx声明任何构造函数,我也不确定您是否可以为GLSL中的结构声明构造函数。请尝试以下方法:
#version 460
struct cmplx
{
float re;
float im;
};
cmplx ld(float re,float im){ cmplx c; c.re=re; c.im=im; return c; }
cmplx fresnel_cont_frac(float ax)
{
const float pi = 3.1415926535897932384626433832795;
const float pix2 = pi * ax * ax;
cmplx b=ld(1.0, -pix2);
return b;
}
您没有为cmplx声明任何构造函数,我也不确定您是否可以为GLSL中的结构声明构造函数。请尝试以下方法:
#version 460
struct cmplx
{
float re;
float im;
};
cmplx ld(float re,float im){ cmplx c; c.re=re; c.im=im; return c; }
cmplx fresnel_cont_frac(float ax)
{
const float pi = 3.1415926535897932384626433832795;
const float pix2 = pi * ax * ax;
cmplx b=ld(1.0, -pix2);
return b;
}
不能在GLSL中使用C++样式的构造函数。您必须使用args显式调用结构名称并赋值(或创建一个构造函数,如上面提到的@Spektre):
不能在GLSL中使用C++样式的构造函数。您必须使用args显式调用结构名称并赋值(或创建一个构造函数,如上面提到的@Spektre):