PFND3DDDI_CLEAR回呼函式 (d3dumddi.h)

Clear 函式會在轉譯目標、深度緩衝區或樣板緩衝區上執行硬體輔助清除。

語法

PFND3DDDI_CLEAR Pfnd3dddiClear;

HRESULT Pfnd3dddiClear(
  [in] HANDLE hDevice,
       const D3DDDIARG_CLEAR *unnamedParam2,
       UINT unnamedParam3,
       const RECT *unnamedParam4
)
{...}

參數

[in] hDevice

顯示裝置的句柄 (圖形內容) 。

unnamedParam2

pData [in]

描述硬體輔助清除作業參數 之D3DDDIARG_CLEAR 結構的指標。

unnamedParam3

NumRect [in]

要清除之 pRect 陣列中的矩形數目。 如果矩形數目設定為零, Clear 應該清除整個轉譯目標、深度緩衝區和樣板緩衝區。 在此情況下, pRect 上的數位內容未定義,而且驅動程式不應該嘗試讀取它們。

unnamedParam4

pRect [in]

RECT 結構的陣列,指出驅動程式應該清除的緩衝區矩形區域。

傳回值

如果 未順利執行硬體輔助清除作業,清除會傳回S_OK或適當的錯誤結果。

備註

驅動程式執行清除作業的方式取決於 NumRect 參數中指定的矩形區域數目,以及D3DDDIARG_CLEARFlags 成員中設定的值。 D3DCLEAR_TARGET、D3DCLEAR_STENCIL和D3DCLEAR_ZBUFFER值 (定義於 D3d8types.h) 表示要清除的緩衝區類型。 D3DCLEAR_COMPUTERECTS值 (定義於 D3dhal.h) 指出如何清除緩衝區。 下列設定指出驅動程式應如何清除指定的緩衝區類型:

  • 如果 NumRect 設定為 0 (NumRect== 0) ,且未在 Flags 中設定D3DCLEAR_COMPUTERECTS,驅動程式會清除 0 像素 (也就是無作業) 。
  • 如果 NumRect 設定為 0,並在 Flags 中設定D3DCLEAR_COMPUTERECTS,則驅動程式會清除整個檢視區 (不是整個表面) 。
  • 如果 NumRect 設定為大於 0 的值, (NumRect!= 0) ,且D3DCLEAR_COMPUTERECTS是在 Flags 中設定,則驅動程式會裁剪 pRect 針對目前檢視區指定的矩形區域。
Scissor 測試也會影響驅動程式執行清除作業的方式。 應用程式會在呼叫 IDirect3DDevice9::SetRenderState 方法中設定D3DRS_SCISSORTESTENABLE轉譯狀態,以啟用 scissor 測試。 如需 scissor 測試的詳細資訊,請參閱 Scissor 測試。 如果已設定D3DRS_SCISSORTESTENABLE轉譯狀態並設定D3DCLEAR_COMPUTERECTS旗標,驅動程式必須裁剪 pRect 指定給剪刀矩形區域的矩形區域。

如果 NumRect 設定為大於 0 的值, (NumRect> 0) 且D3DCLEAR_COMPUTERECTS設定在 Flags 中,則驅動程式會將指定的矩形區域裁剪為目前的檢視區,如果應用程式先前設定D3DRS_SCISSORTESTENABLE,則會將指定的矩形區域裁剪為剪下矩形。 如果未設定 NumRect> 0 和 D3DCLEAR_COMPUTERECTS,則驅動程式會判斷 Direct3D 執行時間已將指定的矩形區域裁剪為目前的檢視區,如果應用程式先前設定D3DRS_SCISSORTESTENABLE,則為 scissor 矩形。

規格需求

需求
目標平台 桌面
標頭 d3dumddi.h (include D3dumddi.h)

另請參閱

D3DDDIARG_CLEAR

D3DDDI_DEVICEFUNCS

矩形