IDXGIFactory::CreateSwapChain-Methode (dxgi.h)
[Ab Direct3D 11.1 wird empfohlen, createSwapChain nicht mehr zum Erstellen einer Swapchain zu verwenden. Verwenden Sie stattdessen CreateSwapChainForHwnd, CreateSwapChainForCoreWindow oder CreateSwapChainForComposition , je nachdem, wie Sie die Swapchain erstellen möchten.]
Erstellt eine Swapchain.
Syntax
HRESULT CreateSwapChain(
[in] IUnknown *pDevice,
[in] DXGI_SWAP_CHAIN_DESC *pDesc,
[out] IDXGISwapChain **ppSwapChain
);
Parameter
[in] pDevice
Typ: IUnknown*
Für Direct3D 11 und frühere Versionen von Direct3D ist dies ein Zeiger auf das Direct3D-Gerät für die Swapchain. Für Direct3D 12 ist dies ein Zeiger auf eine direkte Befehlswarteschlange (siehe ID3D12CommandQueue). Dieser Parameter darf nicht NULL sein.
[in] pDesc
Typ: DXGI_SWAP_CHAIN_DESC*
Ein Zeiger auf eine DXGI_SWAP_CHAIN_DESC-Struktur für die Swapchainbeschreibung. Dieser Parameter darf nicht NULL sein.
[out] ppSwapChain
Typ: IDXGISwapChain**
Ein Zeiger auf eine Variable, die einen Zeiger auf die IDXGISwapChain-Schnittstelle für die von CreateSwapChain erstellte Swapchain empfängt.
Rückgabewert
Typ: HRESULT
DXGI_ERROR_INVALID_CALL , wenn pDesc oder ppSwapChainNULL ist, DXGI_STATUS_OCCLUDED, wenn Sie den Vollbildmodus anfordern und nicht verfügbar ist, oder E_OUTOFMEMORY. Andere Fehlercodes, die durch den Typ des übergebenen Geräts definiert sind, können ebenfalls zurückgegeben werden.
Hinweise
Wenn die Pufferbreite oder die Pufferhöhe null ist, werden die Größen aus der Ausgabefenstergröße in der Swapchainbeschreibung abgeleitet.
Da die Zielausgabe beim Erstellen der Swapchain nicht explizit ausgewählt werden kann, wird empfohlen, keine Vollbild-Swapchain zu erstellen. Dies kann die Präsentationsleistung verringern, wenn die Swapchaingröße und die Ausgabefenstergröße nicht übereinstimmen. Es gibt zwei Möglichkeiten, um sicherzustellen, dass die Größen übereinstimmen:
- Erstellen Sie eine Swapchain mit Fenstern, und legen Sie sie dann mit IDXGISwapChain::SetFullscreenState im Vollbildmodus fest.
- Speichern Sie unmittelbar nach der Erstellung einen Zeiger auf die Swapchain, und verwenden Sie ihn, um die Ausgabefenstergröße während eines WM_SIZE-Ereignisses abzurufen. Ändern Sie dann die Größe der Swapchainpuffer (mit IDXGISwapChain::ResizeBuffers) während des Übergangs von Fenstern zu Vollbild.
Nachdem die Runtime den ersten Frame im Vollbildmodus gerendert hat, kann die Laufzeit während eines Aufrufs von IDXGISwapChain::P resent unerwartet den Vollbildmodus beenden. Um dieses Problem zu umgehen, wird empfohlen, den folgenden Code direkt nach dem Aufrufen von CreateSwapChain auszuführen, um eine Vollbild-Swapchain zu erstellen (Windowed member of DXGI_SWAP_CHAIN_DESC auf FALSE festgelegt).
// Detect if newly created full-screen swap chain isn't actually full screen.
IDXGIOutput* pTarget; BOOL bFullscreen;
if (SUCCEEDED(pSwapChain->GetFullscreenState(&bFullscreen, &pTarget)))
{
pTarget->Release();
}
else
bFullscreen = FALSE;
// If not full screen, enable full screen again.
if (!bFullscreen)
{
ShowWindow(hWnd, SW_MINIMIZE);
ShowWindow(hWnd, SW_RESTORE);
pSwapChain->SetFullscreenState(TRUE, NULL);
}
Sie können DXGI_SWAP_EFFECT - und DXGI_SWAP_CHAIN_FLAG-Werte in der Swapchainbeschreibung angeben, auf die pDesc verweist. Mit diesen Werten können Sie Features wie Flip-Modellpräsentation und Inhaltsschutz mithilfe von ApIs vor Windows 8 verwenden.
Um jedoch die Stereodarstellung zu verwenden und das Größenänderungsverhalten für das Flip-Modell zu ändern, müssen Anwendungen die IDXGIFactory2::CreateSwapChainForHwnd-Methode verwenden. Andernfalls wird der Inhalt des Rückpuffers implizit entsprechend der Größe des Präsentationsziels skaliert. Das heißt, Sie können die Skalierung nicht deaktivieren.
Hinweise für Windows Store-Apps
Wenn eine Windows Store-App CreateSwapChain mit Dem Vollbildmodus aufruft, schlägt CreateSwapChain fehl.Windows Store-Apps rufen die IDXGIFactory2::CreateSwapChainForCoreWindow-Methode auf, um eine Swapchain zu erstellen.
Informationen zum Auswählen eines Formats für den Rückpuffer der Swapchain finden Sie unter Konvertieren von Daten für den Farbraum.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Windows |
Kopfzeile | dxgi.h |
Bibliothek | DXGI.lib |
Weitere Informationen
Verwenden Sie das DXGI-Flip-Modell, um eine optimale Leistung zu erzielen.