共用方式為


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 結構的陣列,表示驅動程式應該清除的緩衝區矩形區域。

傳回值

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

言論

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

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

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

要求

要求 價值
目標平臺 桌面
標頭 d3dumddi.h (包括 D3dumddi.h)

另請參閱

D3DDDIARG_CLEAR

D3DDDI_DEVICEFUNCS

RECT