2016-09-09 198 views
1

我玩GLSL Sandbox不知何故for循環不工作如我所料: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 go down diagonally 
    float c = box(q, vec3(off,1.,1.));//<--scale the box in x 
    aa = min(c,b); 
    } 
    return aa; 
} 

我希望它至少有5盒逐漸下移去與xscale變得更大。但結果好像所有重複的框都以循環的最後結果結束。

我該如何解決這個問題?

回答

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