IDXGISwapChain::P resent 方法 (dxgi.h)
向用戶呈現轉譯的影像。
語法
HRESULT Present(
UINT SyncInterval,
UINT Flags
);
參數
SyncInterval
類型: UINT
整數,指定如何將框架的呈現與垂直空白同步處理。
對於位區塊傳輸 (bitblt) 模型 (DXGI_SWAP_EFFECT_DISCARD或DXGI_SWAP_EFFECT_SEQUENTIAL) ,值為:
- 0 - 簡報會立即發生,沒有同步處理。
- 1 到 4 - 同步處理第 n個垂直空白後的簡報。
- 0 - 取消先前呈現框架的剩餘時間,並在較新的畫面排入佇列時捨棄此框架。
- 1 到 4 - 同步處理至少 n 個垂直空白的簡報。
如果更新區域跨一個以上的輸出, (IDXGIOutput) 所代表的每個輸出, 則 Present 會執行同步處理至包含目標視窗工作區最大子矩形的輸出。
Flags
類型: UINT
包含交換鏈結呈現選項的整數值。 這些選項是由 DXGI_PRESENT 常數所定義。
傳回值
類型: HRESULT
可能的傳回值包括:S_OK、DXGI_ERROR_DEVICE_RESET或 DXGI_ERROR_DEVICE_REMOVED (請參閱DXGI_ERROR) 、DXGI_STATUS_OCCLUDED (请参阅 DXGI_STATUS) 或D3DDDIERR_DEVICEREMOVED。
備註
從 Direct3D 11.1 開始,請考慮使用 IDXGISwapChain1::P resent1 ,因為您可以接著在交換鏈結簡報中使用已變更的矩形和滾動矩形,因此使用較少的記憶體頻寬,因此系統電源較少。 如需在交換鏈結簡報中使用已變更矩形和滾動矩形的詳細資訊,請參閱 在交換鏈結簡報中使用已變更的矩形和滾動矩形。
如需在全螢幕應用程式中翻轉交換鏈結緩衝區時的最佳效能,請參閱 全螢幕應用程式效能提示。
因為呼叫 Present 可能會導致轉譯線程在訊息幫浦線程上等候,所以在使用多個線程的應用程式中呼叫此方法時,請小心。 如需詳細資訊,請參閱 多線程考慮。
Direct3D 9 與 Direct3D 10 之間的差異: 在 Flags 參數中指定DXGI_PRESENT_TEST,類似於 Direct3D 9 中的 IDirect3DDevice9::TestCocolLevel。 |
針對使用設定DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL或DXGI_SWAP_EFFECT_DISCARD值所建立的翻轉簡報模型交換鏈結,成功的簡報會將緩衝區 (0 解除系結,通常由 OMSetRenderTargets 從圖形管線) 設定,但當您在 Flags 參數中傳遞DXGI_PRESENT_DO_NOT_SEQUENCE旗標時除外。
如需當您將內容呈現至畫面時數據值如何變更的資訊,請參閱 轉換色彩空間的數據。
翻轉簡報模型佇列
假設下列具有同步間隔值的畫面會從最舊的 (A) 排入佇列到最新的 (E) ,再呼叫 Present。A: 3, B: 0, C: 0, D: 1, E: 0
當您呼叫 Present 時,運行時間只會顯示 1 個垂直空白間隔的框架 A。 運行時間會提早終止畫面 A,因為畫面 B 中的同步間隔 0。然後運行時間會顯示 1 個垂直空白間隔的框架 D,然後框 E 直到您提交新的簡報為止。 運行時間會捨棄框架 B 和 C。
可變重新整理速率顯示
這是啟用卸除的可變重新整理速率需求。 CheckFeatureSupport 方法可用來判斷此功能是否可用,並設定必要的旗標會參考DXGI_PRESENT_ALLOW_TEARING和DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING的描述,以及顯示變數重新整理速率。規格需求
需求 | 值 |
---|---|
目標平台 | Windows |
標頭 | dxgi.h |
程式庫 | DXGI.lib |