D3D 清空視區

電子書《精通DirectX.3D圖形與動畫程序設計.王德才.pdf》p101
一般情況下,在繪製每一幀圖形前都要先清空視區,即清空渲染目標表面上的視區矩形的內容:顏色緩衝區、深度緩衝區或者模板緩衝區。
IDirect3DDevice9::Clear
HRESULT Clear(
  [in]  DWORD Count,                //重置的矩形區域數量
  [in]  const D3DRECT *pRects,        //重置的矩形區域數組指針
  [in]  DWORD Flags,                //重置緩衝區標誌
  [in]  D3DCOLOR Color,                //重置的顏色值
  [in]  float Z,                    //重置的深度值
  [in]  DWORD Stencil                //重置的模板值
);
該方法接收一個或多個矩形,這些矩形指定要清空的表面區域。當參數Count=1,參數pRects爲覆蓋整個視區的矩形的地址時,它將清空整個視區。另一種清空整個視區的方法是把參數pRects設爲NULL,參數Count設爲0.
Flags可以取D3DCLEAR_TARGET、D3DCLEAR_ZBUFFER和D3DCLEAR_STENCIL的任意組合,指定對顏色緩衝區、深度緩衝區和模板緩衝區分別或者一起清空。

示例代碼
將整個顏色緩衝區置爲藍色背景
g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 255), 1.0f, 0);
初始化視口顏色緩衝區爲紅色,深度緩衝區爲1.0f,模板緩衝區爲0
g_pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER|D3DCLEAR_STENCIL, D3DCOLOR_XRGB(255, 0, 0), 1.0f, 0);

Count和pRects,可以只對視口的某一部分區域初始化。
在(640, 480)的視口中,初始化(0, 0, 100, 100)的顏色緩衝區
D3DRECT rect = {0, 0, 100, 100};
g_pd3dDevice->Clear(1, &rect, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 255), 0.0f, 0);

演示圖:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章