0

我目前使用一些着色器代码,但其中一些让我感到困惑。它使用传入的 gl_vertex 计算出 eyevector,然后反射向量。最后传递给 frag 着色器。在 frag 着色器的传递中,通过 textureCube 提取 texl。我的问题是每个 gl_Vertex 是否只有一个像素?这些着色器的插值在哪里?

 vertex shader:
    uniform vec4 eyepos;  
    varying vec3 reflectvec;
    void main(void)  { 

    vec4 pos = normalize(gl_ModelViewMatrix * gl_Vertex);     
    pos = pos / pos.w;          
    vec3 eyevec = normalize(eyepos.xyz - pos.xyz);     
    vec3 norm = normalize(gl_NormalMatrix * gl_Normal);          
    reflectvec = reflect(-eyevec, norm);          
    gl_Position = ftransform(); 

    }

    frag shader:
    uniform samplerCube cubemap;  
    varying vec3 reflectvec; 

    void main(void)  {     
    vec4 texcolor = textureCube(cubemap, reflectvec);      
    gl_FragColor = texcolor;  
    }
4

1 回答 1

1

这些着色器的插值在哪里?

为每个片段执行片段着色器。一个像素至少包含 1 个片段。在顶点和片段着色器之间,对片段着色器的输入变化被重心插值。

于 2013-03-10T12:50:25.033 回答