专家说DirectX渲染流水线分为以下几步
局部坐标系->世界坐标系->观察坐标系->投影->视口变换->光栅化。
对我来说就是几个函数
一 局部坐标系到世界坐标系的变换
1.平移
函数 D3DXMatrixTranslation
比如 想把物体沿x轴平移十个单位 可以这样
D3DMATRIX mTrans;
D3DMatrixTranslation(&mTrans,10,0,0)
2 旋转
函数 D3DMatrixRotationX, D3DMatrixRotationY, D3DMatrixRotationZ
顾名思义 这三个函数分别是沿X,Y,Z轴进行旋转
比如想把物体沿X轴旋转45度 可以这样
D3DMATRIX mTrans;
float angle = 45*(2.0f*D3DX_PI)/360.0f;
D3DMatrixRotationX(&mTrans,angle)
g_pd3dDevice->SetTransform(D3DTS_WORLD,&mTrans)
3 缩放
函数 D3DXMatrixScaling
比如想把物体沿X轴放大五倍 可以这样
D3DMATRIX mTrans;
D3DXMatrixScaling(&mTrans,5.0f,1.0f,1.0f);
g_pd3dDevice->SetTransform(D3DTS_WORLD,&mTrans)
二 世界坐标系到观察坐标系
函数 D3DXMatrixLookAtLH
三 投影
函数 D3DXMatrixPerspectiveForLH
四 视口变换
填充一个 D3DVIEWPORT9的结构体
比如
D3DVIEWPORT9 vp = {0,0,800,600,0,1}
g_pd3dDevice->SetViewport(&vp);
五 光栅化
个人理解所谓的光栅化就是调用绘制函数时进行的 比如DrawPrimitive