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

Ersetzen Sie den nächsten Puffer der Swapchain durch den Frontpuffer.

Syntax

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

Parameter

[in] pSourceRect

Typ: const RECT*

Zeiger auf eine RECT-Struktur , die eine Region auf der Quelloberfläche angibt, die in Clientkoordinaten des Fensters kopiert werden soll. Gilt nur, wenn die Swapchain mit dem D3DSWAPEFFECT_COPY-Flag erstellt wurde. Bei NULL wird die gesamte Quelloberfläche angezeigt. Wenn das Rechteck die Quelloberfläche überschreitet, wird es an die Quelloberfläche gekappt.

[in] pDestRect

Typ: const RECT*

Zeiger auf die RECT-Struktur , die die Zielregion auf der Zieloberfläche in Clientkoordinaten des Fensters angibt. Gilt nur, wenn die Swapchain mit dem D3DSWAPEFFECT_COPY-Flag erstellt wurde. Bei NULL wird der gesamte Clientbereich gefüllt. Wenn das Rechteck den Zielclientbereich überschreitet, wird es in den Zielclientbereich abgeschnitten.

[in] hDestWindowOverride

Typ: HWND

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

Hinweis 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 flag D3DSWAPEFFECT_COPY erstellt. Weitere Informationen zu Swapchains finden Sie unter Flipping Surfaces (Direct3D 9).

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

[in] dwFlags

Typ: DWORD

Ermöglicht der Anwendung das Anfordern, dass die Methode sofort zurückgegeben wird, wenn der Treiber meldet, dass sie keine Präsentation planen kann. Gültige Werte sind 0 oder eine beliebige Kombination aus D3DPRESENT Flags.

  • Wenn dwFlags = 0 ist, verhält sich diese Methode wie vor Direct3D 9. Present wird so lange gedreht, bis die Hardware frei ist, ohne dass ein Fehler zurückgegeben wird.
  • Wenn dwFlags = D3DPRESENT_DONOTFLIP wird der Anzeigetreiber mit dem Frontpuffer als Quell- und Zieloberfläche aufgerufen. Der Treiber reagiert, indem er eine Framesynchronisierung plant, aber die angezeigte Oberfläche nicht ändert. Dieses Flag ist nur im Vollbildmodus oder bei Verwendung von D3DSWAPEFFECT_FLIPEX im Fenstermodus verfügbar.
  • Wenn dwFlags = D3DPRESENT_DONOTWAIT und die Hardware mit der Verarbeitung beschäftigt 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 Flag kann nur angegeben werden, wenn D3DSWAPEFFECT_FLIPEX verwendet wird. Dieses Verhalten ist für Fenster- und Vollbildmodus identisch.
  • Wenn dwFlags = D3DPRESENT_LINEAR_CONTENT, wird die Gammakorrektur vom linearen Raum in sRGB für Swapketten mit Fenstern durchgeführt. Dieses Flag 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). Weitere Informationen zu verlorenen, aufgehängten und entfernten Geräten finden Sie unter Änderungen beim Verhalten verlorener Geräte.

Unterschiede zwischen Direct3D 9 und Direct3D 9Ex:

D3DSWAPEFFECT_FLIPEX ist nur in Direct3D9Ex unter Windows 7 (oder einem aktuelleren Betriebssystem) verfügbar.

Hinweise

Ä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 die Werte pSourceRect, pDestRect und pDirtyRegion auf NULL festgelegt werden.

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile d3d9.h
Bibliothek D3D9.lib

Weitere Informationen

IDirect3DDevice9Ex