【问题标题】:How do I limit a for-loop in GLSL with a Vec3 as iterator?如何使用 Vec3 作为迭代器限制 GLSL 中的 for 循环?
【发布时间】:2015-09-29 23:07:04
【问题描述】:
vec3 Origin = vec3(0,0,0);
vec3 StepValue = vec3(0,1,0);
vec3 Destination = Origin + (10*StepValue);

for (vec3 Stepper; Stepper==Destination; Stepper += StepValue)

这不是我的实际代码,而是一个做同样事情的例子, 只是我的矢量不像这些那样干净和容易。

这不起作用。循环根本不迭代!

使用 ...

for(vec3 Stepper; Stepper==Stepper; Stepper += StepValue)

... 遍历循环,直到驱动程序崩溃, 或直到循环手动终止。

操作符 >,<,>=<= 不允许用于向量 和lessThan / greaterThan 都不是。

那么,除了运行无限循环之外,我该如何处理呢?

除了==还有其他选择吗?

谢谢!

【问题讨论】:

    标签: for-loop vector iterator glsl


    【解决方案1】:
    for (vec3 Stepper = Origin; all(lessThan(Stepper, Destination)); Stepper += StepValue)
    

    lessThanlessThanEqual 等返回一个 bvec*,可以使用函数 all 将其评估为布尔值任何。但是,请注意,这仍然不会在您的示例中进行迭代,因为您的目的地的 x 和 z 为 0,因此不是 >= Stepper。

    【讨论】:

    • 哇,我收到了回复!非常感谢,我很快就会尝试这个! :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    • 2022-12-08
    • 2017-05-02
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多