我目前正在使用一些着色器代码,但其中一些让我感到困惑。 它使用传入的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;
}
答案 0 :(得分:1)
那些着色器发生了插值?
对每个片段执行片段着色器。像素由至少1个片段组成。在顶点和片段着色器之间,对片段着色器的输入变化是重心插值的。