照常提出几个问题,希望通过阅读可以找到答案。
前提:所说的坐标系都是基于3维空间的3维坐标.

图中LOCAL SPACE又称为本地坐标系。描述物体本身的顶点坐标。
模型矩阵(Model Matrix)通过矩阵相乘变换得来的。观察者矩阵(View Matrix)通过矩阵相乘变换得来的。投影矩阵来表示的。在这个画板上的图像才是可以用于显示的2d图像。投影矩阵(Projection Matrix)通过矩阵相乘变换得来的。通过模型矩阵,观察者矩阵(View Matrix),投影矩阵(Projection Matrix)三步矩阵变换后最终确定该展示怎样的图像。要注意的是矩阵的计算时从右往左的所以:
result = 投影矩阵 * 观察者矩阵 * 模型矩阵。

上面提到了投影矩阵,其实投影矩阵分为:正投影,透视投影,下面就投影方式做一个解释.


20181104204535641.png
视口。以上图片都出自:_superhuihui-OpenGL中涉及到的矩阵变换
// 矩阵计算
m3dMatrixMultiply44(ModelViewMatrix(模型视图矩阵),ViewMatrix(观察者矩阵), ModelMatrix(模型矩阵));//几何变换的管道
GLGeometryTransform transformPipeline;
transformPipeline.SetMatrixStacks(ModelViewMatrix(模型视图矩阵), ProjectionMatrix(投影矩阵));
//获得MVP
transformPipeline.GetModelViewProjectionMatrix()MVP数据时会使用这种方式,比较灵活。如果想要了解具体矩阵是如何计算的:3D数学 矩阵知识
在计算时会发现这种计算会导致物体唯一无法重置,为了解决这种问题OpenGL提出了矩阵栈的概念。栈这个概念应该是很熟悉了吧!原则:先进后出。

以上图片出自:凡几多
简单阐述一下过程:
压栈(PUSH操作)一个单元矩阵,初始化之后本身已近就存在一个单元矩阵。
通过Xcode来查看矩阵中的入内,需要变换为4行4列来看。
出栈(POP操作) 
将开始提出的2个问题做一个简单回答: