MVP三种矩阵功能

M: Model

用于表示所绘制顶点在三维空间中的位置(包括旋转、缩放、平移)。

V: View

表示用于观察世界的“摄像机”所处的位置以及姿态。

P: Projection

用于表示摄像机所观察到的物体,如何映射到投影平面上。

投影矩阵分为两种

  1. 正交投影
  2. 透视投影

使用方法

变换过程为 $pos = M_{Project} M_{View} M_{Model} V_{input} $

其中 $pos$ 归一化(指$pos=\frac{pos}{pos.w}$,不需要vertex shader进行)后是投影面坐标:

由于使用列向量,所以变换过程从右至左(其中数值为了便于理解,没有实际意义):

  1. $V_{input}$ 输入物体坐标,比如绘制一个圆形,中心位置是$(0, 0, 0)$
  2. $M_{Model}$ 进行变换,变换后发现圆形中心实际处于$(0, 0, -5)$的位置
  3. $M_{View}$ 进行变换,变换后发现圆形中心相对于摄像头处于$(0, 5, -2)$的位置
  4. $M_{Projection}$ 进行视角变换,变换后物体位于投影面$(0, 0.3)$,深度$0.2$

得到物体在投影平面的坐标和深度之后,OpenGL对物体进行光栅化、剪裁,而后将像素由投影平面变换到视口空间,即