IDXGISwapChain::P resent-Methode (dxgi.h)

Stellt dem Benutzer ein gerendertes Bild dar.

Syntax

HRESULT Present(
  UINT SyncInterval,
  UINT Flags
);

Parameter

SyncInterval

Typ: UINT

Eine ganze Zahl, die angibt, wie die Darstellung eines Frames mit dem vertikalen Leerzeichen synchronisiert wird.

Für das Bitblockübertragungsmodell (bitblt) (DXGI_SWAP_EFFECT_DISCARD oder DXGI_SWAP_EFFECT_SEQUENTIAL) sind die Folgenden Werte:

  • 0 : Die Präsentation erfolgt sofort, es gibt keine Synchronisierung.
  • 1 bis 4: Synchronisieren Sie die Präsentation nach dem n. vertikalenLeerzeichen.
Für das Flip-Modell (DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL) gelten folgende Werte:
  • 0: Brechen Sie die verbleibende Zeit für den zuvor dargestellten Frame ab, und verwerfen Sie diesen Frame, wenn ein neuerer Frame in die Warteschlange eingereiht wird.
  • 1 bis 4: Synchronisieren Sie die Präsentation für mindestens n vertikale Leerzeichen.
Ein Beispiel, das zeigt, wie sich Synchronisierungsintervallwerte auf eine Flip-Präsentationswarteschlange auswirken, finden Sie unter Hinweise.

Wenn der Updatebereich mehr als eine Ausgabe umfasst (jede durch IDXGIOutput dargestellt), führt Present die Synchronisierung mit der Ausgabe durch, die das größte Unterrecht des Clientbereichs des Zielfensters enthält.

Flags

Typ: UINT

Ein ganzzahliger Wert, der Swap-Chain-Präsentationsoptionen enthält. Diese Optionen werden durch die DXGI_PRESENT Konstanten definiert.

Rückgabewert

Typ: HRESULT

Mögliche Rückgabewerte sind: S_OK, DXGI_ERROR_DEVICE_RESET oder DXGI_ERROR_DEVICE_REMOVED (siehe DXGI_ERROR), DXGI_STATUS_OCCLUDED (siehe DXGI_STATUS) oder D3DDDIERR_DEVICEREMOVED.

Hinweis Die Present-Methode kann entweder DXGI_ERROR_DEVICE_REMOVED oder D3DDDIERR_DEVICEREMOVED zurückgeben, wenn ein Video Karte physisch vom Computer entfernt wurde oder ein Treiberupgrade für das Video Karte durchgeführt wurde.
 

Hinweise

Ab Direct3D 11.1 sollten Sie IDXGISwapChain1::P resent1 verwenden, da Sie dann modifiziert Rechtecke und das Scrollrechteck in der Swap chain-Präsentation verwenden können und somit weniger Speicherbandbreite und damit weniger Systemleistung verwenden können. Weitere Informationen zur Verwendung modifiziert Rechtecke und des Bildlaufrechtecks in der Swap chain-Präsentation finden Sie unter Verwenden modifiziert Rechtecke und des Scrollrechtecks in der Swap chain-Präsentation.

Die beste Leistung beim Umdrehen von Swap-Chain-Puffern in einer Vollbildanwendung finden Sie unter Hinweise zur Leistung von Vollbildanwendungen.

Da das Aufrufen von Present dazu führen kann, dass der Renderthread auf den Nachrichtenpumpthread wartet, seien Sie beim Aufrufen dieser Methode in einer Anwendung, die mehrere Threads verwendet, vorsichtig. Weitere Informationen finden Sie unter Überlegungen zu Multithreading.

Unterschiede zwischen Direct3D 9 und Direct3D 10:

Das Angeben DXGI_PRESENT_TEST im Flags-Parameter entspricht IDirect3DDevice9::TestCooperativeLevel in Direct3D 9.

Bei Wechselketten des Flip-Präsentationsmodells, die Sie mit dem DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL - oder DXGI_SWAP_EFFECT_DISCARD-Wertsatz erstellen, löst eine erfolgreiche Präsentation den Puffer 0 (normalerweise von OMSetRenderTargets festgelegt) aus der Grafikpipeline zurück, außer wenn Sie das DXGI_PRESENT_DO_NOT_SEQUENCE-Flag im Flags-Parameter übergeben.

Informationen dazu, wie sich Datenwerte ändern, wenn Sie Inhalte auf dem Bildschirm präsentieren, finden Sie unter Konvertieren von Daten für den Farbraum.

Warteschlange des Präsentationsmodells spiegeln

Angenommen, die folgenden Frames mit Synchronisierungsintervallwerten werden von ältestem (A) bis neuestem (E) in die Warteschlange gestellt, bevor Sie Present aufrufen.

A: 3, B: 0, C: 0, D: 1, E: 0

Wenn Sie Present aufrufen, zeigt die Laufzeit Frame A für nur ein vertikales leeres Intervall an. Die Runtime beendet Frame A aufgrund des Synchronisierungsintervalls 0 in Frame B frühzeitig. Dann zeigt die Runtime Frame D für ein vertikales leeres Intervall und dann Frame E an, bis Sie eine neue Präsentation übermitteln. Die Runtime verwirft die Frames B und C.

Anzeige der variablen Aktualisierungsrate

Es ist eine Anforderung der variablen Aktualisierungsrate, die anzeigt, dass das Tearing aktiviert ist. Die CheckFeatureSupport-Methode kann verwendet werden, um zu ermitteln, ob dieses Feature verfügbar ist, und um die erforderlichen Flags festzulegen, verweisen Sie auf die Beschreibungen von DXGI_PRESENT_ALLOW_TEARING und DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING und Anzeige variabler Aktualisierungsrate.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile dxgi.h
Bibliothek DXGI.lib

Weitere Informationen

IDXGISwapChain