Can';在WebGL GLSL着色器常量#if表达式中不使用浮点?
在WebGL GLSL中,我尝试执行以下操作:Can';在WebGL GLSL着色器常量#if表达式中不使用浮点?,glsl,webgl,shader,Glsl,Webgl,Shader,在WebGL GLSL中,我尝试执行以下操作: #if (2.0 > 3.0) // something #endif 但这是一个错误: 错误:0:21:“语法错误”:表达式无效 错误:0:21:“2.0”:条件表达式后出现意外标记 : 常量表达式是下列表达式之一: •文字值(例如,5或真) 浮动不是文字值吗 类似地,我也不确定这为什么不起作用,因为它是一个const变量,使用常量表达式作为值: const vec3 x = vec3(1.0); ... #if (x.x >
#if (2.0 > 3.0)
// something
#endif
但这是一个错误:
错误:0:21:“语法错误”:表达式无效
错误:0:21:“2.0”:条件表达式后出现意外标记
:
常量表达式是下列表达式之一:
•文字值(例如,5或真)
浮动不是文字值吗
类似地,我也不确定这为什么不起作用,因为它是一个const
变量,使用常量表达式作为值:
const vec3 x = vec3(1.0);
...
#if (x.x > 1.0)
#endif
错误:0:21:“x”:条件表达式后出现意外标记
错误:0:21:“语法错误”:表达式无效
错误:0:21:“.”:条件表达式后出现意外标记
啊,在预处理器部分的同一个文档中,它说: #if和#elif后面的表达式仅限于对文字整型常量进行运算的表达式,以及定义的运算符使用的标识符 这就是为什么浮动、
length()
等不起作用。预处理器不知道x
,因为它是在编译实际着色器代码之前执行的。