IDirect3DSwapChain9::P resent 方法 (d3d9helper.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_PARAMETERS 的 hDeviceWindow 成員。
[in] pDirtyRegion
類型: const RGNDATA*
除非使用 D3DSWAPEFFECT_COPY 建立交換鏈結,否則此值必須是 NULL。 請參閱 翻轉 Surface (Direct3D 9) 。
如果此值為非 NULL,則包含的區域會以後端緩衝區座標表示。 區域內的矩形是需要更新的最小圖元集。 此方法會將這些矩形納入考慮,方法是只複製區域內的圖元,或一些適當展開的矩形集來優化簡報。 這隻是優化輔助功能,應用程式不應該完全依賴複製的區域。 實作可以選擇複製整個來源矩形。
[in] dwFlags
類型: DWORD
允許應用程式要求方法在驅動程式回報無法排程簡報時立即傳回。 有效值為 0,或 D3DPRESENT_DONOTWAIT 或 D3DPRESENT_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 的快捷方式。 目前已更新為採用旗標,讓應用程式在驅動程式回報無法排程簡報時,要求方法立即傳回。
如有必要,會套用延展作業,將來源矩形內的像素傳送至目標視窗工作區中的目的地矩形。
如果 BeginScene 與 EndScene 配對之間呼叫,除非轉譯目標不是目前的轉譯目標,否則呈現將會失敗 (例如您從建立其他交換鏈結) 取得的後端緩衝區。 這是 Direct3D 9 的新行為。
規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | d3d9helper.h (包含 D3D9.h) |
程式庫 | D3D9.lib |