IDXGISwapChain::ResizeBuffers 方法 (dxgi.h)
變更交換鏈結的背景緩衝區大小、格式和緩衝區數目。 當應用程式視窗調整大小時,應該呼叫這個值。
語法
HRESULT ResizeBuffers(
UINT BufferCount,
UINT Width,
UINT Height,
DXGI_FORMAT NewFormat,
UINT SwapChainFlags
);
參數
BufferCount
類型: UINT
交換鏈結中的緩衝區數目 (包括所有後端和前端緩衝區) 。 此數目與您建立交換鏈結的緩衝區數目不同。 這個數位不能大於 DXGI_MAX_SWAP_CHAIN_BUFFERS。 將此數位設定為零,以保留交換鏈結中現有的緩衝區數目。 您無法為翻轉簡報模型指定少於兩個緩衝區。
Width
類型: UINT
後端緩衝區的新寬度。 如果您指定零,DXGI 會使用目標視窗的工作區寬度。 如果您呼叫 IDXGIFactory2::CreateSwapChainForComposition 方法來建立組合介面的交換鏈結,則無法將寬度指定為零。
Height
類型: UINT
後端緩衝區的新高度。 如果您指定零,DXGI 會使用目標視窗的工作區高度。 如果您呼叫 IDXGIFactory2::CreateSwapChainForComposition 方法來建立組合介面的交換鏈結,則無法將高度指定為零。
NewFormat
類型: DXGI_FORMAT
後端緩衝區新格式 的DXGI_FORMAT型別值。 將此值設定為 DXGI_FORMAT_UNKNOWN ,以保留後端緩衝區的現有格式。 翻轉簡報模型支援比 bit-block transfer (bitblt) 模型更受限的格式集。
SwapChainFlags
類型: UINT
使用位 OR 運算結合 的DXGI_SWAP_CHAIN_FLAG型別值組合。 產生的值會指定交換鏈結行為的選項。
傳回值
類型: HRESULT
如果成功,則傳回S_OK;否則為錯誤碼。 如需錯誤碼的清單,請參閱 DXGI_ERROR。
備註
除非您釋放其後端緩衝區的所有未完成參考,否則您無法調整交換鏈結的大小。 您必須在後端緩衝區上釋放其所有直接和間接參考,才能讓 ResizeBuffers 成功。
應用程式在呼叫資源上的 AddRef 之後,會保留直接參考。
間接參考是由資源檢視所保留、將資源的檢視系結至裝置內容、使用資源的命令清單、使用該資源的檢視的命令清單、執行另一個使用資源之命令清單的命令清單等等。
呼叫ResizeBuffers之前,請確定應用程式會呼叫資源上的適當版本調用數目) 、資源的任何檢視,以及使用資源或檢視的任何命令清單,並確保資源或檢視都未系結至裝置內容,以確保應用程式會釋放所有參考 (。 您可以使用 ID3D11DeviceCoNtext::ClearState 來確保已釋放所有參考。 如果檢視系結至延後的內容,您必須藉由呼叫 ID3D11DeviceCoNtext::ClearState、 ID3D11DeviceCoNtext::FinishCommandList來舍 棄部分建置的命令清單以及) (。 呼叫 ResizeBuffers之後,您可以透過 IDXGISwapChain::GetBuffer重新查詢介面。
針對您使用 DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE建立的交換鏈結,在呼叫 ResizeBuffers之前,也會在交換鏈結的後端緩衝區介面上呼叫 IDXGISurface1::ReleaseDC ,以確保您沒有未完成的 GDI 裝置內容 (DC) 開啟。
當應用程式收到WM_SIZE訊息) 時,建議您在用戶端視窗調整大小 (時呼叫 ResizeBuffers 。
在 Windows 8 與 Windows 7 中 ,IDXGISwapChain::ResizeBuffers 與 Windows 7 之間的唯一差異,是使用 設定DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL 或DXGI_SWAP_EFFECT_FLIP_DISCARD值所建立的翻轉簡報模型交換鏈結。 在 Windows 8 中,您必須呼叫 ResizeBuffers ,才能實現全螢幕模式與視窗模式之間的轉換;否則,對 IDXGISwapChain::P resent 方法的下一個呼叫會失敗。
需求
目標平台 | Windows |
標頭 | dxgi.h |
程式庫 | DXGI.lib |