For loop GLSL-for循环不工作

For loop GLSL-for循环不工作,for-loop,opengl-es,glsl,For Loop,Opengl Es,Glsl,不知何故,我正在玩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 g

不知何故,我正在玩
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;
}
float映射(vec3p)
{
p、 yz=旋转(p.yz,mouse.y*10.);
浮点数aa=0。;
浮动b=框(p,vec3(1,1,1.);

对于(int i=0;i您永远不会从
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);
}
float b=box(p,vec3(1,1,1.);
浮动aa=b;
对于(int i=0;i<5;i++){
…
aa=最小值(c,aa);
}