无法在WebGL GLSL着色器常量#if表达式中使用浮点数?

时间:2019-01-06 01:43:39

标签: glsl webgl shader

在WebGL GLSL中,我正在尝试执行以下操作:

#if (2.0 > 3.0)
    // something
#endif

但是此错误与:

  

错误:0:21:“语法错误”:表达式无效   错误:0:21:'2.0':条件表达式后出现意外令牌

The 1.0 spec says

  

一个常量表达式是其中之一

     

•文字值(例如5或 true

不浮动文字值吗?

类似地,我也不确定为什么它不起作用,因为它是一个const变量,使用常量表达式作为值:

const vec3 x = vec3(1.0);
...
#if (x.x > 1.0)
#endif
  

错误:0:21:“ x”:条件表达式后出现意外令牌

     

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

     

错误:0:21:“。” :条件表达式后出现意外令牌

1 个答案:

答案 0 :(得分:1)

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

  

#if和#elif之后的表达式仅限于使用文字整数常量以及定义的运算符使用的标识符的表达式。

这就是为什么浮动,length()等不起作用的原因。