2010-01-07 4 views
8

Мне был предложен проект приложения C++ 3D, в котором будут использоваться 3 дисплея, каждый из которых будет отображаться с другой камеры.3D-приложение с несколькими мониторами

Недавно я узнал об Ogre3D, но неясно, поддерживает ли он вывод различных камер на разные дисплеи/графические процессоры.

Есть ли у кого-нибудь опыт работы с аналогичной установкой и Ogre или другим движком?

ответ

3

По крайней мере, на большинстве систем (например, Windows, MacOS) система окон создает виртуальный рабочий стол с различными мониторами, отображаемыми на разные части рабочего стола. Если вы хотите, вы можете (например) создать одно большое окно, которое будет охватывать все три экрана. Если вы установите это окно для использования OpenGL, почти все, что использует OpenGL (почти наверняка, включая Ogre3D), будет работать нормально, хотя в некоторых случаях создание такого разрешения вывода может налагать графическую карту на то, что она немного медленнее, чем обычно ,

Если вы хотите иметь дело с отдельным окном на каждом дисплее, все может быть немного сложнее. Сам OpenGL не пытается (даже попытаться) определить, как обрабатывать отображение в нескольких окнах - это зависит от набора функций для конкретной платформы. Например, в Windows у вас есть контекст рендеринга для каждого окна, и вам нужно использовать WGLMakeCurrent, чтобы выбрать, какой контекст визуализации вы рисуете в любой момент времени.

Если память используется, порт Windows Ogre3D поддерживает несколько контекстов рендеринга, поэтому это тоже не должно быть проблемой. Я ожидаю, что он может работать с несколькими окнами и в других системах, но я не использовал его ни в каких других системах, поэтому я не могу сказать с какой-либо определенностью.

Мое ближайшее предположение, однако, заключается в том, что поддержка трех мониторов будет почти несущественной в ваших общих усилиях по развитию. Конечно, это делает означает, что вы (можете сказать своему начальнику) нуждаются в установке тройного монитора для разработки и тестирования, что, конечно же, не плохо! :-)

Редактировать: OpenGL сам не указывает ничего о полноэкранных окнах и обычных окнах. Если память служит, по крайней мере, для Windows, чтобы получить полноэкранное приложение, вы используете ChangeDisplaySettings с CDS_FULLSCREEEN. После этого он рассматривает практически весь виртуальный рабочий стол как одно окно. Я не помню, чтобы сделать это с несколькими мониторами, поэтому я не могу сказать много с какой-либо большой уверенностью.

+0

Здравствуй, Джерри, ты за свой ответ. Это не обязательно отдельное окно для каждого дисплея, потому что оно должно быть полноэкранным для каждого дисплея (я не уверен, что этот вид вывода зависит от окна или обходит систему окон). Каково твое мнение? – user16120

+0

То же самое верно для LINUX: если вы используете несколько мониторов, вы обычно используете Xinerama, который создает один огромный виртуальный экран. – Tilo

3

Есть несколько вещей, которые следует сказать о поддержке нескольких головок в случае OGRE3D. По моему опыту, рабочим решением является использование исходной версии Ogre 1.6.1 и применение this patch. Используя этот патч, пользователи смогли отобразить приложение Ogre на 6 monitors configuration.

Personnaly, я успешно применил этот патч и использовал его с помощью StereoManager plugin для подключения приложений Ogre с помощью 3D-проектора. Я использовал только Direct3D9. Плагин StereoManager поставляется с модифицированной демонстрацией (Fresnel_Demo), которая может помочь вам настроить первое приложение с несколькими головками.

Я также должен добавить, что патч с несколькими заголовками теперь является частью ядра Ogre, начиная с версии 1.7. Ogre1.7 был недавно выпущен как RC1, так что это может быть самый быстрый и простой способ заставить его работать.

Смежные вопросы