一旦我们建立了3D场景的几何描述,确定好虚拟摄影机,接下来的任务就是在显示器中建立3D场景的2D表示,为了实现这一个过后才能,我们专门的流程来完成它,我们称之为绘制流水线。大致如下图:(从左至右)
在绘制流水线中,有几个比较重要的部分就是,是坐标系的变换,这类坐标的变换通常是使用矩阵来实现的,Direct3D可以帮助我们实现这些变换,我们所提供的仅仅只是提供需要变换的矩阵以及变换的类型,,Direct3D中变换矩阵的方法如下:
IDirect3DDevice9->SetTransform方法,该方法有两个参数:一个变换的类型,一个是需要变换的矩阵。
我们将在你接下来的部分详细讨论。
局部坐标系
用于定义构成物体的三角单元列表的坐标系,也就是以模型为中心的坐标系。
优点:简化建模过程
世界坐标系
将很多个物体组织在一起的时候,就是一个大的场景,这个场景为了统一一个标准,就会使用世界坐标系,从局部坐标系到世界坐标系的变换叫做:世界变换。该变换通常包括缩放、平移、旋转等。
世界变换通过一个矩阵来表示,并且IDirect3DDevice9::SetTransform方法来加以应用,我们将该方法的第一个参数设置为:D3DTS_WOLED,然后地问个参数表示所采用的世界变换的矩阵。
例如:假定我们想一个立方体的中心位于世界坐标的中的(-3,2,6)点上面,让一个球体的中心位于点(5,0,-2)上,可以这么实现:
//构建立方体的
D3DXMATRIX cubeWorldMatrix;
D3DXMatrixTranslation(&cubeWorldMatrix, -3.0f, 2.0f, 6.0f);
//构建球体的
D3DXMATRIX sphereworldMatrix;
D3DXMatrixTranslation(&sphereworldMatrix, 5.0f, 0.0f, -2.0f);
//设置多维数据集的转换
Device->SetTransform(D3DT