Как я должен автоматически поддерживать одинарные или двойные мониторы в XNA в Windows 7? - PullRequest
3 голосов
/ 16 июня 2011

Я создаю игровое приложение с использованием Microsoft XNA, которое будет работать на одном общедоступном экране (проекторе) с элементами управления на экране ноутбука (Windows 7.) Когда второй монитор недоступен, мне бы хотелось, чтобы только общедоступный экран для отображения на экране ноутбука. Пропорции экранов будут одинаковыми.

Есть ли библиотека, позволяющая нам делать это автоматически или, в худшем случае, путем изменения настроек?

Ответы [ 2 ]

3 голосов
/ 18 июня 2011

Проверьте, доступны ли два монитора с GraphicsAdapter.Adapters.Count()

Если таковые имеются, создайте другую форму и установите ее для второго монитора (проектора).Затем с каждым кадром визуализируйте общедоступный интерфейс на дополнительном мониторе и нарисуйте элементы управления на основном.

Чтобы переключаться между формами, просто поменяйте местами ручки:

graphics.GraphicsDevice.Present(form1.Handle);

В противном случае нарисуйте только общедоступный.

Вы можете прочитать о том, как использовать WinForms с XNA, по адресу http://create.msdn.com/en-US/education/catalog/sample/winforms_series_1

Это решение предполагает две вещи:

  • что основной дисплей настроен на дисплей ноутбука, а второй монитор настроен на расширение (не зеркальное отображение)
  • при использовании XNA через WinForms
0 голосов
/ 18 июня 2011

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

Вы можете сделать так, чтобы сервер рендеринга выполнял весь реальный рендеринг для двух отдельных RenderTarget2D (илина главном экране, а затем на цели рендеринга), а затем передайте одну цель рендеринга клиенту для рендеринга на дополнительный экран.Это означает, что клиентское приложение является сверхлегким и будет включать только рендеринг текстуры в полноэкранный режим.

Передача данных в клиентское приложение может быть выполнена разными способами, но моим личным фаворитом в этой ситуации будетфайл отображения памяти для передачи байтовых данных цели рендеринга во вторую.В противном случае tcp-связь должна использоваться для производительности.Если вам нужна информация по извлечению байтовых данных или передаче в другое приложение, просто прокомментируйте мой пост.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...