Arbeiten mit mehreren Monitorsystemen (Direct3D 9)

Das Konzept des exklusiven Vollbildmodus wird in Direct3D 9 beibehalten, wird jedoch vollständig implizit im IDirect3D9::CreateDevice und IDirect3DDevice9::Reset-Methodeaufrufe beibehalten. Wenn ein Gerät erfolgreich zurückgesetzt oder im Vollbildvorgang erstellt wird, wird das Direct3D-Objekt, das das Gerät erstellt hat, als alle Adapter auf diesem System gekennzeichnet. Dieser Zustand wird als exklusiver Modus bezeichnet, und an diesem Punkt besitzt das Direct3D-Objekt exklusiven Modus. Exklusiver Modus bedeutet, dass Geräte, die von einem anderen Direct3D9-Objekt erstellt wurden, weder den Vollbildvorgang übernehmen noch den Videospeicher zuweisen können. Wenn ein Direct3D9-Objekt außerdem den exklusiven Modus annimmt, werden alle Geräte außer dem Gerät, das vollbildgeschützt wurde, in den verlorenen Zustand gesetzt. Informationen zum Behandeln verlorener Geräte finden Sie unter "Verlorene Geräte" (Direct3D 9).

Zusammen mit dem exklusiven Modus wird das Direct3D9-Objekt über das Fokusfenster informiert, das vom Gerät verwendet werden soll. Der exklusive Modus wird veröffentlicht, wenn das letzte Vollbildgerät, das dem Direct3D9-Objekt gehört, entweder im Fenstermodus zurückgesetzt oder zerstört wird.

Geräte können in zwei Kategorien unterteilt werden, wenn ein Direct3D9-Objekt den exklusiven Modus besitzt. Die erste Gerätekategorie sind diejenigen, die von demselben Direct3D9-Objekt erstellt wurden, das das Gerät erstellt hat, das bereits vollbildlich ist, das gleiche Fokusfenster wie das Gerät, das bereits vollbildig ist, und stellt einen anderen Adapter von jedem Vollbildgerät dar. Geräte in dieser Kategorie haben keine Einschränkungen für die Möglichkeit, zurückgesetzt oder erstellt zu werden und werden nicht in den verlorenen Zustand gesetzt. Geräte in dieser Kategorie können sogar im Vollbildmodus platziert werden.

Geräte, die nicht in dieser Kategorie erstellt wurden, die von einem anderen Direct3D9-Objekt oder mit einem anderen Fokusfenster erstellt wurden, oder für einige Adapter mit einem Gerät, das bereits vollbildlich ist, können nicht zurückgesetzt und bleiben im verlorenen Zustand, bis der exklusive Modus verloren geht.

Die praktische Umsetzung besteht darin, dass eine Mehrere Monitoranwendung mehrere Geräte im Vollbildmodus platzieren kann, aber nur, wenn alle diese Geräte für unterschiedliche Adapter sind, von demselben Direct3D9-Objekt erstellt wurden und alle das gleiche Fokusfenster teilen.

Wenn Sie ein neues Gerät mit demselben IDirect3D9-Objekt und fokusfenster erstellen, verliert Ihr ursprüngliches Gerät seine Oberflächen. Sie müssen IDirect3DDevice9::Zurücksetzen auf dem ersten Gerät aufrufen, damit Ihre Anwendung sie verwenden kann. Führen Sie beispielsweise folgendes aus, um zwei Geräte zu erstellen:

  1. Gerät 1 erstellen
  2. Gerät 2 erstellen
  3. Gerät 1 zurücksetzen

Programmierung Tipps