代码之家  ›  专栏  ›  技术社区  ›  Sitacious

为什么在片段着色器中对浮点使用modulo时会出现语法错误?

  •  0
  • Sitacious  · 技术社区  · 3 年前

    我是使用碎片着色器的新手。为什么我的代码会引发语法错误?我不明白为什么它不起作用。这是一段引发错误的代码:

    if ((int) pos.y % 9 == 1) shade = 1;
    

    二者都 pos.y shade 是浮子。我把 (int) 之前 位置 这样我就可以对它使用模。错误消息是这样说的:

    ERROR: 0:17: ')' : syntax error syntax error
    

    我认为这个错误意味着我已经 太多了 很少 括号,但我检查了一下,我的代码似乎很好。为什么会出现错误,我能做些什么来解决它?

    1 回复  |  直到 3 年前
        1
  •  4
  •   Nicol Bolas    3 年前

    GLSL不是C.As stated in the GLSL specification :

    没有类型转换运算符;而是使用构造函数。

    像这样的 (int) 在GLSL中不是一件事。如果您想将一些浮点转换为 int ,使用构造函数语法: int(pos.y)

    推荐文章