菜鸟DirectX之渲染流水线

时间:2021-10-22 10:22:20

专家说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