共用方式為


IDirect3DSwapChain9::P resent 方法 (d3d9.h)

在交換鏈結所擁有的背景緩衝區序列中呈現下一個緩衝區的內容。

語法

HRESULT Present(
  [in] const RECT    *pSourceRect,
  [in] const RECT    *pDestRect,
  [in] HWND          hDestWindowOverride,
  [in] const RGNDATA *pDirtyRegion,
  [in] DWORD         dwFlags
);

參數

[in] pSourceRect

類型:const RECT*

來源矩形的指標 (請參閱 RECT) 。 使用 Null 來呈現整個表面。 除非使用 D3DSWAPEFFECT_COPY 建立交換鏈結,否則此值必須為 Null 。 如果矩形超過來源表面,矩形就會裁剪到來源表面。

[in] pDestRect

類型:const RECT*

用戶端座標中目的地矩形的指標 (請參閱 RECT) 。 除非使用 D3DSWAPEFFECT_COPY 建立交換鏈結,否則此值必須為 Null 。 使用 Null 填滿整個工作區。 如果矩形超過目的地工作區,就會將矩形裁剪到目的地工作區。

[in] hDestWindowOverride

類型: HWND

將工作區視為此簡報目標的目的地視窗。 如果此值為Null,執行時間會針對簡報使用D3DPRESENT_PARAMETERShDeviceWindow成員。

[in] pDirtyRegion

類型:const RGNDATA*

除非使用 D3DSWAPEFFECT_COPY 建立交換鏈,否則此值必須是Null。 請參閱 翻轉 Surface (Direct3D 9)

如果此值不是Null,則包含的區域會以背景緩衝區座標表示。 區域內的矩形是需要更新的最小圖元集。 此方法只會藉由複製區域內的圖元,或一些適當展開的矩形集,將簡報優化時,將這些矩形納入考慮。 這只是優化協助工具,而且應用程式不應完全依賴複製的區域。 實作可以選擇複製整個來源矩形。

[in] dwFlags

類型: DWORD

允許應用程式在驅動程式回報無法排程簡報時,立即要求方法傳回。 有效值為 0,或是 D3DPRESENT_DONOTWAITD3DPRESENT_LINEAR_CONTENT的任何組合。

  • 如果 dwFlags = 0,這個方法的行為就如同 Direct3D 9 之前所做的一樣。 存在將會旋轉,直到硬體可用為止,而不會傳回錯誤。
  • 如果 dwFlags = D3DPRESENT_DONOTWAIT,而且硬體正在忙碌處理或等候垂直同步間隔,方法會傳回D3DERR_WASSTILLDRAWING。
  • 如果 dwFlags = D3DPRESENT_LINEAR_CONTENT,則會針對視窗交換鏈結從線性空間到 sRGB 執行 gamma 更正。 只有當驅動程式公開 D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION (請參閱 Gamma (Direct3D 9) ) 時,此旗標才會生效。 如果反緩衝器格式為 16 位浮點數,應用程式應該指定此旗標,以比對呈現為全螢幕 Gamma 行為的視窗模式。

傳回值

類型: HRESULT

如果方法成功,傳回值會D3D_OK。 如果方法失敗,傳回值可以是下列其中一項:D3DERR_DEVICELOST、D3DERR_DRIVERINTERNALERROR、D3DERR_INVALIDCALL、D3DERR_OUTOFVIDEOMEMORY E_OUTOFMEMORY。

備註

Present 方法是 Present的快捷方式。 Present 已更新為接受旗標,讓應用程式在驅動程式回報無法排程簡報時,立即要求方法傳回。

如有必要,會套用延展作業,將來源矩形內的圖元傳送至目標視窗工作區中的目的地矩形。

如果 BeginSceneEndScene 配對之間呼叫,除非轉譯目標不是目前的轉譯目標 (,例如您從建立其他交換鏈結) 取得的背景緩衝區,否則存在將會失敗。 這是 Direct3D 9 的新行為。

需求

   
目標平台 Windows
標頭 d3d9.h (包含 D3D9.h)
程式庫 D3D9.lib

另請參閱

IDirect3DSwapChain9

重設