Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';在WebGL GLSL着色器常量#if表达式中不使用浮点?_Glsl_Webgl_Shader - Fatal编程技术网

Can';在WebGL GLSL着色器常量#if表达式中不使用浮点?

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 >

在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 > 1.0)
#endif
错误:0:21:“x”:条件表达式后出现意外标记

错误:0:21:“语法错误”:表达式无效

错误:0:21:“.”:条件表达式后出现意外标记


啊,在预处理器部分的同一个文档中,它说:

#if和#elif后面的表达式仅限于对文字整型常量进行运算的表达式,以及定义的运算符使用的标识符

这就是为什么浮动、
length()
等不起作用。

预处理器不知道
x
,因为它是在编译实际着色器代码之前执行的。