http://www.cs.uaf.edu/2007/spring/cs481/lecture/01_23_matrices.html
我刚读完这篇文章,但我有两个关于乘法的问题。
gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex
当我将它们全部相乘时,这是最终的屏幕坐标(x,y)。如果我只乘以gl_ModelViewMatrix * gl_Vertex或gl_ProjectionMatrix * gl_Vertex怎么办? gl_Vertex单独意味着什么?
答案 0 :(得分:2)
gl_Vertex是世界空间中的顶点坐标。 顶点和眼睛可以在世界空间中任意放置和定向。
在与ModelViewMatrix相乘后,您将获得“眼睛空间”中的顶点坐标,这是一个坐标系,眼睛位于0,0,0。乘以投影矩阵(并进行均匀的坐标系分割)可以在屏幕空间中提供坐标。那些不是像素坐标,而是一些标准化的坐标系,在屏幕/窗口的中心有0,0,0。视口变换是最后的。它将图像映射到窗口(像素?)坐标。
解释如下:
答案 1 :(得分:1)
如果我只乘以gl_ModelViewMatrix * gl_Vertex或gl_ProjectionMatrix * gl_Vertex怎么办?
然后投影矩阵(第一种情况)或模型视图矩阵(第二种情况)将不起作用。如果它们是身份矩阵,您将看不到效果。如果不是,那么您的视角或位置可能是错误的。
gl_Vertex单独意味着什么?
gl_Vertex
是传递给管道输入的顶点坐标。