我正在玩GLSL Sandbox某种方式for
循环无法正常工作:
float map( vec3 p )
{
p.yz = rotate(p.yz, mouse.y*10.);
float aa = 0.;
float b = box( p, vec3(1.,1.,1.) );
for(int i=0; i<5; i++)
{
float off = float(i);
vec3 q = p+off*.05;//<--pivot go down diagonally
float c = box( q, vec3(off,1.,1.) );//<--scale the box in x
aa = min(c,b);
}
return aa;
}
我预计至少有5个盒子逐渐下降,xscale
会变大。但结果似乎所有重复的框都以循环的最后结果结束。
我该如何解决这个问题?
答案 0 :(得分:2)
您永远不会从aa
开始阅读,因此它最终会成为最后c
和原始b
的最小值。重新安排这样的事情应该有效:
float b = box(p, vec3(1., 1., 1.));
float aa = b;
for (int i = 0; i < 5; i++) {
…
aa = min(c, aa);
}