代码之家  ›  专栏  ›  技术社区  ›  Andy Ray

不能在webgl glsl shader常量if表达式中使用floats?

  •  -1
  • Andy Ray  · 技术社区  · 6 年前

    在webgl glsl中,我正在尝试执行以下操作:

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

    但这一错误在于:

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

    The 1.0 spec says :

    常量表达式 是其中之一

    _浼A literal value(例如,5或 )

    不是浮点数吗?

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

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

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

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

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

    1 回复  |  直到 5 年前
        1
  •  1
  •   Andy Ray    6 年前

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

    if和elif后面的表达式仅限于在整型常量上操作的表达式,以及由定义的运算符使用的标识符。

    这就是为什么漂浮, length() 等不工作。