Utilisation de plusieurs systèmes de moniteur (Direct3D 9)

Le concept de mode plein écran exclusif est conservé dans Direct3D 9, mais il est entièrement implicite dans les appels de méthode IDirect3D9::CreateDevice et IDirect3DDevice9::Reset . Chaque fois qu’un appareil est correctement réinitialisé ou créé en opération en plein écran, l’objet Direct3D qui a créé l’appareil est marqué comme propriétaire de tous les adaptateurs sur ce système. Cet état est appelé mode exclusif, et à ce stade, l’objet Direct3D possède le mode exclusif. Le mode exclusif signifie que les appareils créés par n’importe quel autre objet Direct3D9 ne peuvent ni assumer l’opération en plein écran ni allouer de la mémoire vidéo. En outre, lorsqu’un objet Direct3D9 suppose le mode exclusif, tous les appareils autres que l’appareil qui est passé en plein écran sont placés dans l’état perdu. Pour plus d’informations sur la gestion des appareils perdus, voir Appareils perdus (Direct3D 9).

En mode exclusif, l’objet Direct3D9 est informé de la fenêtre de focus à utiliser par l’appareil. Le mode exclusif est libéré lorsque le dernier appareil plein écran appartenant à cet objet Direct3D9 est réinitialisé au mode fenêtre ou détruit.

Les appareils peuvent être divisés en deux catégories lorsqu’un objet Direct3D9 possède un mode exclusif. La première catégorie d’appareils est celle qui a été créée par le même objet Direct3D9 qui a créé l’appareil qui est déjà plein écran, ont la même fenêtre de focus que l’appareil déjà plein écran et représentent un adaptateur différent de n’importe quel appareil plein écran. Les appareils de cette catégorie n’ont aucune restriction concernant leur capacité à être réinitialisés ou créés et ne sont pas placés dans l’état perdu. Les appareils de cette catégorie peuvent même être placés en mode plein écran.

Les appareils non dans cette catégorie, qui seraient ceux créés par un autre objet Direct3D9, ou avec une fenêtre de focus différente, ou pour un adaptateur avec un appareil déjà plein écran ne peut pas être réinitialisé et rester dans l’état perdu jusqu’à ce que le mode exclusif soit perdu.

L’implication pratique est qu’une application à plusieurs moniteurs peut placer plusieurs appareils en mode plein écran, mais seulement si tous ces appareils sont pour différents adaptateurs, ont été créés par le même objet Direct3D9, et tous partagent la même fenêtre de focus.

Lorsque vous créez un appareil à l’aide du même objet IDirect3D9 et de la même fenêtre de focus, votre appareil d’origine perdra ses surfaces. Vous devez appeler IDirect3DDevice9::Reset sur le premier appareil afin que votre application l’utilise. Par exemple, pour créer deux appareils, procédez comme suit :

  1. Créer un appareil 1
  2. Créer un appareil 2
  3. Réinitialiser l’appareil 1

Programmation Astuces