Compartir a través de


Trabajar con varios sistemas de supervisión (Direct3D 9)

El concepto de modo exclusivo de pantalla completa se conserva en Direct3D 9, pero se mantiene completamente implícito en las llamadas al método IDirect3D9::CreateDevice e IDirect3DDevice9::Reset . Cada vez que un dispositivo se restablece o crea correctamente en una operación de pantalla completa, el objeto Direct3D que creó el dispositivo se marca como propietario de todos los adaptadores de ese sistema. Este estado se conoce como modo exclusivo y, en este momento, el objeto Direct3D posee el modo exclusivo. El modo exclusivo significa que los dispositivos creados por cualquier otro objeto Direct3D9 no pueden asumir la operación de pantalla completa ni asignar memoria de vídeo. Además, cuando un objeto Direct3D9 asume el modo exclusivo, todos los dispositivos que no sean el dispositivo que se ha ido a pantalla completa se colocan en el estado perdido. Para obtener información sobre cómo controlar los dispositivos perdidos, consulte Dispositivos perdidos (Direct3D 9).

Junto con el modo exclusivo, el objeto Direct3D9 se informa de la ventana de enfoque que va a usar el dispositivo. El modo exclusivo se libera cuando el último dispositivo de pantalla completa propiedad de ese objeto Direct3D9 se restablece al modo en ventana o se destruye.

Los dispositivos se pueden dividir en dos categorías cuando un objeto Direct3D9 posee el modo exclusivo. La primera categoría de dispositivos son las creadas por el mismo objeto direct3D9 que creó el dispositivo que ya está en pantalla completa, tienen la misma ventana de enfoque que el dispositivo que ya está en pantalla completa y representan un adaptador diferente de cualquier dispositivo de pantalla completa. Los dispositivos de esta categoría no tienen restricciones relativas a su capacidad de restablecimiento o creación y no se colocan en el estado perdido. Los dispositivos de esta categoría incluso se pueden colocar en modo de pantalla completa.

Los dispositivos que no están en esta categoría, que serían los creados por un objeto Direct3D9 diferente, o con una ventana de enfoque diferente, o para algún adaptador con un dispositivo que ya tiene pantalla completa no se puede restablecer y permanecer en estado perdido hasta que se pierda el modo exclusivo.

La implicación práctica es que una aplicación de varios monitores puede colocar varios dispositivos en modo de pantalla completa, pero solo si todos estos dispositivos son para adaptadores diferentes, se crearon mediante el mismo objeto Direct3D9 y todos comparten la misma ventana de enfoque.

Al crear un nuevo dispositivo con el mismo objeto IDirect3D9 y la misma ventana de enfoque, el dispositivo original perderá sus superficies. Tendrá que llamar a IDirect3DDevice9::Reset en el primer dispositivo para que la aplicación la use. Por ejemplo, para crear dos dispositivos, haga lo siguiente:

  1. Crear dispositivo 1
  2. Crear dispositivo 2
  3. Restablecer dispositivo 1

Sugerencias de programación