【问题标题】:GLSL - for loop not workingGLSL - for 循环不起作用
【发布时间】:2016-09-09 11:44:15
【问题描述】:

我在玩 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;
}

我希望随着xscale 变大,至少有 5 个盒子会逐渐下降。但结果似乎所有重复的框都以循环的最后一个结果结束。

我该如何解决这个问题?

【问题讨论】:

    标签: for-loop opengl-es glsl


    【解决方案1】:

    你永远不会读到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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-13
      • 2013-12-31
      • 2018-04-22
      • 2016-05-13
      • 2018-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多