Freigeben über


IDirect3DDevice9Ex::P resentEx-Methode (d3d9.h)

Tauschen Sie den nächsten Puffer der Swapchain mit dem Frontpuffer aus.

Syntax

HRESULT PresentEx(
  [in] const RECT    *pSourceRect,
  [in] const RECT    *pDestRect,
  [in] HWND          hDestWindowOverride,
  [in] const RGNDATA *pDirtyRegion,
  [in] DWORD         dwFlags
);

Die Parameter

[in] pSourceRect

Typ: const RECT*

Zeiger auf eine RECT-Struktur , die region auf der Quelloberfläche angibt, die in Fensterclientkoordinaten kopiert werden soll. Gilt nur, wenn die Swapchain mit dem D3DSWAPEFFECT_COPY-Flag erstellt wurde. Wenn NULL, wird die gesamte Quelloberfläche angezeigt. Wenn das Rechteck die Quelloberfläche überschreitet, wird es auf die Quelloberfläche zugeschnitten.

[in] pDestRect

Typ: const RECT*

Zeiger auf RECT-Struktur , der den Zielbereich auf der Zieloberfläche in Fensterclientkoordinaten angibt. Gilt nur, wenn die Swapchain mit dem D3DSWAPEFFECT_COPY-Flag erstellt wurde. Wenn NULL, wird der gesamte Clientbereich ausgefüllt. Wenn das Rechteck den Zielclientbereich überschreitet, wird es an den Zielclientbereich abgeschnitten.

[in] hDestWindowOverride

Typ: HWND

Zeigen Sie auf ein Zielfenster, dessen Clientbereich als Ziel für diese Präsentation verwendet wird. Wenn dieser Wert NULL ist, verwendet die Laufzeit das hDeviceWindow-Element von D3DPRESENT_PARAMETERS für die Präsentation.

Anmerkung Wenn Sie eine Swapchain mit D3DSWAPEFFECT_FLIPEX erstellen, müssen Sie NULL an hDestWindowOverride übergeben.
 

[in] pDirtyRegion

Typ: const RGNDATA*

Zeiger auf eine RGNDATA-Struktur , die den kleinsten Satz von Pixeln angibt, die übertragen werden müssen. Dieser Wert muss NULL sein, es sei denn, die Swapchain wurde mit dem D3DSWAPEFFECT_COPY-Flag erstellt. Weitere Informationen zu Swapchains finden Sie unter Flipping Surfaces (Direct3D 9).For more information about swapchains, see Flipping Surfaces (Direct3D 9).

Wenn dieser Wert ungleich NULL ist, wird der enthaltene Bereich in Hintergrundpufferkoordinaten ausgedrückt. Die Methode berücksichtigt diese Rechtecke beim Optimieren der Präsentation, indem nur die Pixel innerhalb des Bereichs oder einige entsprechend erweiterte Rechtecke kopiert werden. Dies ist nur eine Hilfe zur Optimierung, und die Anwendung sollte nicht darauf angewiesen sein, dass die Region genau kopiert wird. Die Implementierung kann das gesamte Quellrechteck kopieren.

[in] dwFlags

Typ: DWORD

Ermöglicht der Anwendung, die Methode sofort zurückzugeben, wenn der Treiber meldet, dass eine Präsentation nicht geplant werden kann. Gültige Werte sind 0 oder eine beliebige Kombination aus D3DPRESENT Flags.

  • Wenn dwFlags = 0, verhält sich diese Methode wie vor Direct3D 9. Die Präsentation wird gedreht, bis die Hardware frei ist, ohne einen Fehler zurückzugeben.
  • If dwFlags = D3DPRESENT_DONOTFLIP the display driver is called with the front buffer as both the source and target surface. Der Treiber reagiert, indem er eine Framesynchronisierung plant, aber nicht die angezeigte Oberfläche ändert. Dieses Kennzeichen ist nur im Vollbildmodus oder bei Verwendung von D3DSWAPEFFECT_FLIPEX im Fenstermodus verfügbar.
  • Wenn dwFlags = D3DPRESENT_DONOTWAIT und die Hardware ausgelastet ist oder auf ein vertikales Synchronisierungsintervall wartet, gibt die Methode D3DERR_WASSTILLDRAWING zurück.
  • Wenn dwFlags = D3DPRESENT_FORCEIMMEDIATE, wird D3DPRESENT_INTERVAL_IMMEDIATE für diesen Present-Aufruf erzwungen. Dieses Kennzeichen kann nur bei Verwendung von D3DSWAPEFFECT_FLIPEX angegeben werden. Dieses Verhalten ist für Fenster- und Vollbildmodi identisch.
  • Wenn dwFlags = D3DPRESENT_LINEAR_CONTENT, wird die Gammakorrektur von linearer Fläche auf sRGB für Fenster-Swapchains durchgeführt. Dieses Kennzeichen wird nur wirksam, wenn der Treiber D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION verfügbar macht (siehe Gamma (Direct3D 9)).

Rückgabewert

Typ: HRESULT

Mögliche Rückgabewerte sind: S_OK, D3DERR_DEVICELOST, D3DERR_DEVICEHUNG, D3DERR_DEVICEREMOVED oder D3DERR_OUTOFVIDEOMEMORY (siehe D3DERR) oder S_PRESENT_OCCLUDED oder S_PRESENT_MODE_CHANGED (siehe S_PRESENT). Weitere Informationen zu verlorenen, hängen und entfernten Geräten finden Sie unter "Änderungen am Verhalten verlorener Geräte ".

Unterschiede zwischen Direct3D 9 und Direct3D 9Ex:

D3DSWAPEFFECT_FLIPEX ist nur in Direct3D9Ex verfügbar, das unter Windows 7 (oder einem aktuelleren Betriebssystem) ausgeführt wird.

Bemerkungen

Ähnlich wie die IDirect3DDevice9::P resent-Methode fügt PresentEx einen dwflags-Parameter hinzu.

Wenn die Swapchain mit D3DSWAPEFFECT_FLIPEX Flag erstellt wird, müssen pSourceRect-, pDestRect - und pDirtyRegion-Werte auf NULL festgelegt werden.

Anforderungen

Anforderung Wert
Zielplattform- Fenster
Header d3d9.h
Library D3D9.lib

Siehe auch

IDirect3DDevice9Ex