GLSL - for循环不起作用

时间:2016-09-09 03:27:48

标签: for-loop opengl-es glsl

我正在玩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会变大。但结果似乎所有重复的框都以循环的最后结果结束。

我该如何解决这个问题?

1 个答案:

答案 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);
}