在HLSL有很多矩阵乘法的,虽然我了解如何以及在何处使用他们,我不知道如何推导它们或他们的实际目标是什么。
所以我在想,如果有一个资源联机,说明这一点,我感到特别好奇背后是什么一个视图矩阵和投影矩阵世界+视图矩阵世界矩阵相乘的目的。
在HLSL有很多矩阵乘法的,虽然我了解如何以及在何处使用他们,我不知道如何推导它们或他们的实际目标是什么。
所以我在想,如果有一个资源联机,说明这一点,我感到特别好奇背后是什么一个视图矩阵和投影矩阵世界+视图矩阵世界矩阵相乘的目的。
你可以得到一些信息,从数学的角度来看,在这个维基百科的文章或MSDN 。
从本质上讲,当你渲染3D模型到屏幕上,你开始散落在3D空间中的顶点的简单集合。 这些顶点都在“ 对象空间 ”表达了自己的立场。 也就是说,它们通常具有在所呈现的情景没有什么意义,但只表达一个顶点和其他同型号之间的关系坐标。 举例来说,一个模型的顶点的位置只能范围从-1到1(或类似的,这取决于如何模型已创建)。
为了使在正确的位置的模型,你要缩放,旋转并将其转化到场景中的“真实”的位置。 您正在这个位置是在“ 世界空间 ”坐标也表达场景中的顶点之间的真正关系式表示。 要做到这一点,你只需乘以其世界矩阵的每个顶点的立场。 这个矩阵必须创建包含您需要申请,为了使物体出现在场景中的正确位置平移/旋转/缩放参数。
在这一点上(所有模型的所有顶点乘以世界矩阵后价格)的顶点表示在世界坐标,但你仍然不能正确显示它们,因为它们的位置相对于你的“观点”(即你的相机) 不是 。 所以,这个时候你使用反射要从中渲染场景中的视点的位置和方向的视图矩阵相乘的一切。
所有的顶点现在处于正确的位置,但为了模拟角度你还是要乘以一个投影矩阵的一切。 这最后的乘法确定的基础上从摄像机的距离顶点如何变化的位置。
现在终于所有的顶点,从他们的“ 对象空间 ”的位置开始,一直移动到屏幕,在那里他们将被渲染,光栅化,然后呈现在最终位置。
在线资源: Direct3D的矩阵 , 投影Metrices , Direct3D的转变 , 矩阵的的DirectX API中的重要性 。