IDirect3DDevice9::Reset-Methode (d3d9helper.h)

Setzt den Typ, die Größe und das Format der Swapchain zurück.

Syntax

HRESULT Reset(
  [in, out] D3DPRESENT_PARAMETERS *pPresentationParameters
);

Parameter

[in, out] pPresentationParameters

Typ: D3DPRESENT_PARAMETERS*

Zeiger auf eine D3DPRESENT_PARAMETERS-Struktur , die die neuen Präsentationsparameter beschreibt. Dieser Wert darf nicht NULL sein.

Wenn Sie in den Vollbildmodus wechseln, versucht Direct3D, ein Desktopformat zu finden, das dem Backpufferformat entspricht, sodass back buffer und front buffer format identisch sind (um die Farbkonvertierung zu vermeiden).

Wenn diese Methode zurückgibt:

  • BackBufferCount, BackBufferWidth und BackBufferHeight sind auf 0 festgelegt.
  • BackBufferFormat ist nur für den Fenstermodus auf D3DFMT_UNKNOWN festgelegt. Im Vollbildmodus muss ein Format angegeben werden.

Rückgabewert

Typ: HRESULT

Mögliche Rückgabewerte sind: D3D_OK, D3DERR_DEVICELOST, D3DERR_DEVICEREMOVED, D3DERR_DRIVERINTERNALERROR oder D3DERR_OUTOFVIDEOMEMORY (siehe D3DERR).

Hinweise

Wenn ein Aufruf von IDirect3DDevice9::Reset fehlschlägt, wird das Gerät in den Zustand "verloren" versetzt (wie durch einen Rückgabewert von D3DERR_DEVICELOST aus einem Aufruf von IDirect3DDevice9::TestCooperativeLevel angegeben), es sei denn, es befindet sich bereits im Zustand "nicht zurücksetzen" (wie durch einen Rückgabewert von D3DERR_DEVICENOTRESET aus einem Aufruf von IDirect3DDevice9::TestCooperativeLevel angegeben). Weitere Informationen zur Verwendung von IDirect3DDevice9::TestCooperativeLevel and Lost Devices (Direct3D 9) finden Sie unter IDirect3DDevice9::Reset im Kontext verloren gegangener Geräte.

Der Aufruf von IDirect3DDevice9::Reset führt dazu, dass alle Texturspeicheroberflächen verloren gehen, verwaltete Texturen aus dem Videospeicher geleert werden und alle Zustandsinformationen verloren gehen. Vor dem Aufrufen der IDirect3DDevice9::Reset-Methode für ein Gerät sollte eine Anwendung alle expliziten Renderziele, Tiefenschablonenoberflächen, zusätzliche Swapchains, Zustandsblöcke und D3DPOOL_DEFAULT Ressourcen freigeben, die dem Gerät zugeordnet sind.

Es gibt zwei verschiedene Arten von Swapchains: Vollbild oder Fenster. Wenn die neue Swapchain im Vollbildmodus ausgeführt wird, wird der Adapter in den Anzeigemodus versetzt, der der neuen Größe entspricht.

Direct3D 9-Anwendungen können davon ausgehen, dass nachrichten während dieses Anrufs an sie gesendet werden (z. B. bevor dieser Anruf zurückgegeben wird); Anwendungen sollten Vorsichtsmaßnahmen treffen, um Direct3D derzeit nicht aufzurufen. Wenn IDirect3DDevice9::Reset fehlschlägt, können außerdem nur IDirect3DDevice9::Reset, IDirect3DDevice9::TestCooperativeLevel und die verschiedenen Release-Memberfunktionen aufgerufen werden. Das Aufrufen einer anderen Methode kann zu einer Ausnahme führen.

Ein Aufruf von IDirect3DDevice9::Reset schlägt fehl, wenn er in einem anderen Thread als dem zum Erstellen des zurückgesetzten Geräts aufgerufen wird.

Pixelshader und Vertexshader bleiben IDirect3DDevice9::Reset-Aufrufe für Direct3D 9 erhalten. Sie müssen nicht explizit von der Anwendung neu erstellt werden.

D3DFMT_UNKNOWN kann beim Aufrufen von IDirect3D9::CreateDevice, IDirect3DDevice9::Reset und IDirect3DDevice9::CreateAdditionalSwapChain für das Pufferformat im Fenstermodus angegeben werden. Dies bedeutet, dass die Anwendung nicht das aktuelle Desktopformat abfragen muss, bevor IDirect3D9::CreateDevice für den Fenstermodus aufgerufen wird. Für den Vollbildmodus muss das Hintergrundpufferformat angegeben werden. Wenn BackBufferCount gleich 0 (BackBufferCount = 0) festgelegt wird, entsteht ein Backpuffer.

Wenn Sie versuchen, mehrere Grafikkarten in einer Gruppe zurückzusetzen, legen Sie pPresentationParameters so fest, dass er auf ein Array von D3DPRESENT_PARAMETERS Strukturen verweist, eine für jede Anzeige in der Adaptergruppe.

Wenn ein Multiheadgerät mit D3DCREATE_ADAPTERGROUP_DEVICE erstellt wurde, erfordert IDirect3DDevice9::Reset ein Array von D3DPRESENT_PARAMETERS Strukturen, wobei jede Struktur eine Vollbildanzeige angeben muss. Um wieder in den Fenstermodus zu wechseln, muss die Anwendung das Gerät zerstören und ein Nicht-Multihead-Gerät im Fenstermodus neu erstellen.

Anforderungen

   
Zielplattform Windows
Kopfzeile d3d9helper.h (include D3D9.h)
Bibliothek D3D9.lib

Weitere Informationen

D3DPRESENT_PARAMETERS

D3DSWAPEFFECT

IDirect3DDevice9

IDirect3DDevice9::P resent

Multihead (Direct3D 9)