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

问题描述 投票:-1回答:1

在WebGL GLSL中,我正在尝试做类似的事情:

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

但是这个错误有:

错误:0:21:'语法错误':表达式无效错误:0:21:'2.0':条件表达式后的意外标记

The 1.0 spec says

常量表达式是其中之一

•字面值(例如,5或真)

浮点字面值是不是?

同样,我也不确定为什么这不起作用,因为它是一个const变量,使用值的常量表达式:

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

错误:0:21:'x':条件表达式后的意外标记

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

错误:0:21:'。' :条件表达式后的意外标记

glsl webgl shader
1个回答
1
投票

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

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

这就是为什么花车,length()等不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.