2013-02-08 117 views
0

http://www.cs.uaf.edu/2007/spring/cs481/lecture/01_23_matrices.html关于OpenGL矩阵乘法

我刚读完这个,但我有2个关于乘法的问题。

GL_POSITION = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex

这是最后的屏幕坐标(X,Y)当我乘以它们。如果我只乘以gl_ModelViewMatrix * gl_Vertex或gl_ProjectionMatrix * gl_Vertex怎么办? gl_Vertex是什么意思?

+0

为了了解这行意味着整个深度,我真的建议得到协调的不同的理解空间prevalant在诸如模型空间,世界空间,眼睛/镜头空间,剪辑空间,投影空间,标准化设备坐标空间等3D应用程序。 http://www.glprogramming.com/red/chapter03.html – legends2k

回答

1

如果我只乘以gl_ModelViewMatrix * gl_Vertex或gl_ProjectionMatrix * gl_Vertex怎么办?

然后投影矩阵(第一种情况)或模型视图矩阵(第二种情况)不会生效。如果他们是身份矩阵,您将看不到效果。如果他们不是,那么你的视角或位置可能是错误的。

gl_Vertex是什么意思?

gl_Vertex是传递给管道输入的顶点坐标。

+0

谢谢但将gl_ModelViewMatrix * gl_Vertex会返回一些我可以在未来使用的重要事物吗? – deniz

+0

@deniz是的,它在应用模型视图转换之后返回顶点位置。 [本文](http://www.songho.ca/opengl/gl_transform.html)很好地解释了转换 –

2

gl_Vertex是世界空间中的顶点坐标。顶点和眼睛可以任意放置并定向在世界空间中。

乘以ModelViewMatrix后,您会在'eye-space'中获得一个顶点坐标,该坐标系统的眼睛位于0,0,0。乘以投影矩阵(并做这种均匀的坐标系划分thingy)给你在屏幕空间的坐标。这些不是像素坐标,但是在屏幕/窗口的中心有一些标准化的坐标系,其中0,0,0。视口变换是最后一个。它将图像映射到窗口(像素?)坐标。

的解释中给出:

http://www.srk.fer.hr/~unreal/theredbook/ 第3章