Поделиться через


Операции Multiple-Monitor (Direct3D 9)

Если устройство успешно сброшено (IDirect3DDevice9::Reset) или создано (IDirect3D9::CreateDevice) в полноэкранных операциях, объект Direct3D, создавший устройство, помечается как владеющий всеми адаптерами в этой системе. Это состояние называется монопольным режимом, и объекту Direct3D принадлежит монопольный режим. Монопольный режим означает, что устройства, созданные любым другим объектом Direct3D, не могут принимать ни полноэкранные операции, ни выделять видеопамять. Кроме того, когда объект Direct3D принимает монопольный режим, все устройства, кроме полноэкранного, помещаются в потерянное состояние. Дополнительные сведения см. в разделе Потерянные устройства (Direct3D 9).

Наряду с монопольным режимом объект Direct3D информируется о окне фокуса, которое будет использовать устройство. Монопольный режим освобождается, когда окончательное полноэкранное устройство, принадлежащее данному объекту Direct3D, либо сбрасывается в оконный режим, либо уничтожается.

Устройства можно разделить на две категории, если объект Direct3D владеет монопольным режимом. Первая категория устройств имеет следующие характеристики.

  • Они создаются тем же объектом Direct3D, который создал устройство в полноэкранном режиме.
  • Они имеют то же окно фокуса, что и устройство в полноэкранном режиме.
  • Они представляют собой адаптер, отличный от любого полноэкранного устройства.

Устройства в этой категории не имеют ограничений в отношении их возможности сброса или создания, и они не помещаются в потерянное состояние. Устройства в этой категории можно даже переводить в полноэкранный режим.

Устройства, которые не относятся к первой категории ( устройства, созданные другим объектом Direct3D, созданные с другим окном фокуса и созданные для адаптера с устройством, которое уже является полноэкранным), не могут быть сброшены и оставаться в потерянном состоянии, пока не будет потерян монопольный режим. В результате приложение с несколькими мониторами может поместить несколько устройств в полноэкранный режим, но только в том случае, если все эти устройства предназначены для разных адаптеров, были созданы с помощью одного объекта Direct3D и совместно используют одно и то же окно фокуса.

Представление сцены