使用GLSL的立方体贴图实现

时间:2013-03-10 12:03:38

标签: opengl glsl

我目前正在使用一些着色器代码,但其中一些让我感到困惑。 它使用传入的gl_vertex计算出eyevector,然后重新选择vector.finally传递给frag shader。在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;  
    }

1 个答案:

答案 0 :(得分:1)

  

那些着色器发生了插值?

对每个片段执行片段着色器。像素由至少1个片段组成。在顶点和片段着色器之间,对片段着色器的输入变化是重心插值的。