D3D-Device resetten
-
Hallo,
ich suche nach einer geeigneten Möglichkeit, meine Direct3D Anwendung
mit geänderten Presentation-Parametern zu resetten, z.B. wenn der Anwender
während der Laufzeit VSYNC umschalten will, eine andere Auflösung oder
Vollbild möchte.
Die Funktion IDirect3DDevice9::Reset macht das leider nicht, obwohl ich
das gehofft hätte. Gibt es da ne andere Möglichkeit, als das Device
komplett zu entladen und neu zu initialisieren?MfG
Norman
-
-
Reset macht das schon.
-
Also wenn ich Reset aufrufe, passiert rein gar nix. Die Funktion nimmt
zwar eine D3DPRESENTPARAMETERS-Struktur auf, aber verändern tut sich nix...
Ich hatte nur gehofft, es gibt da eine einfache Möglichkeit, dies zu
bewerkstelligen.
-
Ich kann nur sagen, bei mir geht es, dabei so Einstellungen wie Vollbild, Auflösung oder VSync zu ändern. Du hast sicherlich irgendwo nen Fehler drin.
-
Aber tröste dich, anscheinend kriegen es viele "professionelle" Spieleentwickler auch nicht auf die Reihe.
-
Bei mir sieht es so aus:
ich nehme meine vorherige D3DPRESENT_PARAMETERS-Struktur, mit der ich das Device
initialisiert habe und verändere sie so, wie ich sie haben will,
z.B: Windowed = 0.
Dann rufe ich nur noch m_pd3dDevice->Reset(&m_d3dpp) auf, und es tut sich
nix oder meine Anwendung bleibt, wie grad im Test, hängen..
-
Hast du das hier beachtet?
Calling IDirect3DDevice9::Reset causes all texture memory surfaces to be lost, managed textures to be flushed from video memory, and all state information to be lost. Before calling the IDirect3DDevice9::Reset method for a device, an application should release any explicit render targets, depth stencil surfaces, additional swap chains, state blocks, and D3DPOOL_DEFAULT resources associated with the device.
-
Aber natuerlich beachtet er das, schliesslich habe ich ihn schon darauf hingewiesen. f'`8k
Gruß, TGGC (\-/ has leading)
-
@TomasRiker:
Danke, hatte ich nicht beachtet, hoffe dann funktionierts..