我们使用模型视图投影矩阵的目的是什么? 为什么着色器需要模型视图投影矩阵?
我们使用模型视图投影矩阵的目的是什么? 为什么着色器需要模型视图投影矩阵?
模型、视图和投影矩阵是三个独立的矩阵。模型将对象从本地坐标空间映射到世界空间,视图从世界空间到摄像机空间,投影从摄像机到屏幕。
如果你将它们组合起来,就可以使用一个结果将所有东西从对象空间映射到屏幕空间,这样你就能够确定需要传递给下一阶段可编程管道的内容了。
在旧的固定功能管道中,你会将模型和视图应用在一起,然后使用另一个由它们派生的结果(使用一些修复措施,例如即使对对象应用了缩放,法线也仍然具有单位长度)来计算光照,最后应用投影。你可以在OpenGL中看到这一点,因为它从不将模型和视图矩阵分离 —— 它们保持为单个modelview矩阵堆栈。因此,有时候也会在着色器中看到这一点。
因此:合成的模型视图投影矩阵通常被着色器用来将每个模型加载的顶点映射到屏幕上。这并非必需,有许多实现相同效果的方法,它只是因为它允许所有可能的线性变换而变成了通常使用。由于这个原因,它在过去的固定管道世界中也是标准。
请观看this视频以了解模型、视图和投影的概念。(强烈推荐)
然后,请观看this以了解世界中的顶点如何表示为矩阵以及它们如何进行变换。