GLSL(iOS)函数参数不能正常工作?

时间:2013-04-12 12:42:24

标签: ios opengl-es glsl

传递给函数的纹理颜色在循环内不起作用?

我对此感到困惑,第一个代码正在运行,第二个代码没有。有人对此行为有解释吗?只需在函数内部移动纹理查找就可以了,但不需要它,因为xy不会改变。

不工作:(输出为黑色)

float getDistance(vec3 point,vec4 n_0)
{
    float d=point.z;
    d+=0.1*(n_0.w);
    return(d);
}

void main()
{
   vec4 n_0;
   vec4 color;
   vec3 point;

   point=vec3(v_coord.x*1.0,v_coord.y*1.0,-1.0);

   n_0=texture2D(noise,vec2(point*1.0))*2.0-1.0;

   int i;
   float d=100.0;
   for(i=0;i<50;i++)
   {
       d=getDistance(point,n_0);
       if(d<0.001)break;

       point.z+=d;
   }

    gl_FragColor=clamp(vec4(d),0.0,1.0);
}

工作:(输出是噪音)

float getDistance(vec3 point)
{
    vec4 n_0=texture2D(noise,vec2(point*1.0))*2.0-1.0;

    float d=point.z;
    d+=0.1*(n_0.w);
    return(d);
}

void main()
{
    vec4 n_0;
    vec4 color;
    vec3 point;

    point=vec3(v_coord.x*1.0,v_coord.y*1.0,-1.0);

    int i;
    float d=100.0;
    for(i=0;i<50;i++)
    {
        d=getDistance(point);
        if(d<0.001)break;

        point.z+=d;
    }

    gl_FragColor=clamp(vec4(d),0.0,1.0);
}

0 个答案:

没有答案