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

Le concept de mode plein écran exclusif est conservé dans Direct3D 9, mais il est conservé 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 mode plein écran, l’objet Direct3D qui a créé l’appareil est marqué comme propriétaire de toutes les cartes 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 tout autre objet Direct3D9 ne peuvent ni assumer le fonctionnement en plein écran ni allouer de la mémoire vidéo. En outre, lorsqu’un objet Direct3D9 assume le mode exclusif, tous les appareils autres que l’appareil en plein écran sont placés dans l’état perdu. Pour plus d’informations sur la gestion des appareils perdus, consultez Appareils perdus (Direct3D 9).

En plus du 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é en mode fenêtré ou détruit.

Les appareils peuvent être divisés en deux catégories lorsqu’un objet Direct3D9 possède le mode exclusif. La première catégorie d’appareils sont ceux qui ont été créés par le même objet Direct3D9 qui a créé l’appareil qui est déjà en plein écran, qui ont la même fenêtre de focus que l’appareil qui est déjà en plein écran et qui 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 qui ne sont pas 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 certains adaptateurs avec un appareil déjà plein écran ne peuvent pas être réinitialisés et restent dans l’état perdu jusqu’à ce que le mode exclusif soit perdu.

Concrètement, une application à moniteur multiple peut placer plusieurs appareils en mode plein écran, mais uniquement si tous ces appareils sont destinés à des adaptateurs différents, ont été créés par le même objet Direct3D9 et partagent tous 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 perd ses surfaces. Vous devez appeler IDirect3DDevice9::Reset sur le premier appareil pour 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

Conseils de programmation