【发布时间】:2014-04-22 05:09:15
【问题描述】:
很多谷歌搜索都假设你对这些矩阵所代表的内容有基本的了解,而我没有。
我了解向量和矩阵及其运算。
我想参考我看不懂的最简单的着色器代码,将法线和顶点放在眼睛空间中:
//vertex shader
varying vec4 color;
varying vec3 N;
varying vec3 v;
void main(void)
{
v = vec3(gl_ModelViewMatrix * gl_Vertex);
N = normalize(gl_NormalMatrix * gl_Normal);
color = gl_Color;
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
我的问题:
(i) 当顶点着色器循环遍历每个顶点时,gl_ModelViewMatrix 是否会随着每个顶点循环而改变?或者 gl_ModelViewMatrix 是否在每次顶点迭代中保持不变,并且可以将任何顶点转换为眼睛空间?
(ii) 与我的第一个问题类似,但 gl_NormalMatrix 包含哪些信息?它是否包含有关场景中每个法线的信息,以及它如何将进入顶点着色器的当前顶点法线转换为眼睛空间?或者当每个顶点进入顶点着色器时,矩阵是否会发生变化,这就是它如何将进入顶点着色器的当前顶点法线转换为眼睛空间?
【问题讨论】: