IDXGISwapChain::ResizeBuffers-Methode (dxgi.h)

Ändert die Größe, das Format und die Anzahl der Puffer der Swapchain. Dies sollte aufgerufen werden, wenn die Größe des Anwendungsfensters geändert wird.

Syntax

HRESULT ResizeBuffers(
  UINT        BufferCount,
  UINT        Width,
  UINT        Height,
  DXGI_FORMAT NewFormat,
  UINT        SwapChainFlags
);

Parameter

BufferCount

Typ: UINT

Die Anzahl der Puffer in der Swapchain (einschließlich aller Back- und Frontpuffer). Diese Zahl kann sich von der Anzahl der Puffer unterscheiden, mit denen Sie die Swapchain erstellt haben. Diese Zahl darf nicht größer als DXGI_MAX_SWAP_CHAIN_BUFFERS sein. Legen Sie diese Zahl auf 0 fest, um die vorhandene Anzahl von Puffern in der Swapchain beizubehalten. Sie können nicht weniger als zwei Puffer für das Flip-Präsentationsmodell angeben.

Width

Typ: UINT

Die neue Breite des Hintergrundpuffers. Wenn Sie null angeben, verwendet DXGI die Breite des Clientbereichs des Zielfensters. Sie können die Breite nicht als Null angeben, wenn Sie die IDXGIFactory2::CreateSwapChainForComposition-Methode aufgerufen haben, um die Swapchain für eine Kompositionsoberfläche zu erstellen.

Height

Typ: UINT

Die neue Höhe des Rückpuffers. Wenn Sie null angeben, verwendet DXGI die Höhe des Clientbereichs des Zielfensters. Sie können die Höhe nicht als Null angeben, wenn Sie die IDXGIFactory2::CreateSwapChainForComposition-Methode aufgerufen haben, um die Swapchain für eine Kompositionsoberfläche zu erstellen.

NewFormat

Typ: DXGI_FORMAT

Ein DXGI_FORMAT typisierter Wert für das neue Format des Rückpuffers. Legen Sie diesen Wert auf DXGI_FORMAT_UNKNOWN fest, um das vorhandene Format des Hintergrundpuffers beizubehalten. Das Flip-Präsentationsmodell unterstützt einen eingeschränkteren Satz von Formaten als das Bitblockübertragungsmodell (Bitblt).

SwapChainFlags

Typ: UINT

Eine Kombination aus DXGI_SWAP_CHAIN_FLAG typisierten Werten, die mithilfe einer bitweisen OR-Operation kombiniert werden. Der resultierende Wert gibt Optionen für das Swapchainverhalten an.

Rückgabewert

Typ: HRESULT

Gibt bei erfolgreicher Ausführung S_OK zurück. andernfalls ein Fehlercode. Eine Liste der Fehlercodes finden Sie unter DXGI_ERROR.

Hinweise

Sie können die Größe einer Swapchain nur ändern, wenn Sie alle ausstehenden Verweise auf die zugehörigen Backpuffer freigeben. Sie müssen alle direkten und indirekten Verweise auf die Hintergrundpuffer freigeben, damit ResizeBuffers erfolgreich ist.

Direkte Verweise werden von der Anwendung gespeichert, nachdem addRef für eine Ressource aufgerufen wurde.

Indirekte Verweise werden von Ansichten an eine Ressource gespeichert, die eine Ansicht der Ressource an einen Gerätekontext bindet, eine Befehlsliste, die die Ressource verwendet, eine Befehlsliste, die eine Ansicht für diese Ressource verwendet, eine Befehlsliste, die eine andere Befehlsliste ausgeführt hat, die die Ressource verwendet hat usw.

Stellen Sie vor dem Aufrufen von ResizeBuffers sicher, dass die Anwendung alle Verweise (durch Aufrufen der entsprechenden Anzahl von Releaseaufrufen ) für die Ressourcen, alle Ansichten der Ressource und alle Befehlslisten freigibt, die entweder die Ressourcen oder Ansichten verwenden, und stellen Sie sicher, dass weder die Ressource noch eine Sicht an einen Gerätekontext gebunden ist. Sie können ID3D11DeviceContext::ClearState verwenden, um sicherzustellen, dass alle Verweise freigegeben werden. Wenn eine Ansicht an einen verzögerten Kontext gebunden ist, müssen Sie auch die teilweise erstellte Befehlsliste verwerfen (durch Aufrufen von ID3D11DeviceContext::ClearState, dann ID3D11DeviceContext::FinishCommandList und dann Release in der Befehlsliste). Nachdem Sie ResizeBuffers aufgerufen haben, können Sie Schnittstellen über IDXGISwapChain::GetBuffer erneut abfragen.

Rufen Sie für Swapchains, die Sie mit DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE erstellt haben, vor dem Aufrufen von ResizeBuffers auch IDXGISurface1::ReleaseDC auf der Backpufferoberfläche der Swapchain auf, um sicherzustellen, dass keine ausstehenden GDI-Gerätekontexte (DCs) geöffnet sind.

Es wird empfohlen, ResizeBuffers aufzurufen, wenn die Größe eines Clientfensters geändert wird (d. a. wenn eine Anwendung eine WM_SIZE Nachricht empfängt).

Der einzige Unterschied zwischen IDXGISwapChain::ResizeBuffers in Windows 8 und Windows 7 ist die Verwendung von Flip-Präsentationsmodell-Swapchains, die Sie mit festgelegtem DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL oder DXGI_SWAP_EFFECT_FLIP_DISCARD Wert erstellen. In Windows 8 müssen Sie ResizeBuffers aufrufen, um einen Übergang zwischen Vollbildmodus und Fenstermodus zu realisieren. Andernfalls schlägt der nächste Aufruf der IDXGISwapChain::P resent-Methode fehl.

Anforderungen

   
Zielplattform Windows
Kopfzeile dxgi.h
Bibliothek DXGI.lib

Weitere Informationen

IDXGISwapChain