如何使用 Vec3 作为迭代器限制 GLSL 中的 for 循环?
How do I limit a for-loop in GLSL with a Vec3 as iterator?
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 (vec3 Stepper = Origin; all(lessThan(Stepper, Destination)); Stepper += StepValue)
lessThan、lessThanEqual 等 return 一个 bvec* 可以使用函数计算为布尔值所有 和任何。但是,请注意,这仍然不会在您的示例中迭代,因为您目的地的 x 和 z 为 0,因此不是 >= Stepper。
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 (vec3 Stepper = Origin; all(lessThan(Stepper, Destination)); Stepper += StepValue)
lessThan、lessThanEqual 等 return 一个 bvec* 可以使用函数计算为布尔值所有 和任何。但是,请注意,这仍然不会在您的示例中迭代,因为您目的地的 x 和 z 为 0,因此不是 >= Stepper。