2010-01-07 16 views
8

Me han desafiado un proyecto de aplicación 3D en C++ que utilizará 3 pantallas, cada una de ellas con una cámara diferente.Aplicación 3D de varios monitores

Recientemente aprendí sobre Ogre3D pero no está claro si es compatible con la salida de diferentes cámaras a diferentes pantallas/GPU.

¿Alguien tiene alguna experiencia con un programa de instalación y un motor Ogre similar?

Respuesta

3

Al menos en la mayoría de los sistemas (por ejemplo, Windows, MacOS), el sistema de ventanas crea un escritorio virtual, con diferentes monitores asignados a diferentes partes del escritorio. Si lo desea, puede (por ejemplo) crear una ventana grande que cubra las tres pantallas. Si configura esa ventana para usar OpenGL, casi cualquier cosa que use OpenGL (casi seguro que incluye Ogre3D) funcionará bien, aunque en algunos casos producir tanta resolución de salida puede gravar la tarjeta gráfica al punto que es un poco más lenta de lo normal .

Si desea tratar con una ventana separada en cada pantalla, las cosas pueden ser un poco más complejas. OpenGL por sí mismo no (incluso intenta) definir cómo manejar la visualización en múltiples ventanas, eso depende de un conjunto de funciones específico de la plataforma. En Windows, por ejemplo, tiene un contexto de representación para cada ventana, y debe usar WGLMakeCurrent para elegir el contexto de representación al que dibuja en un momento dado.

Si la memoria sirve, el puerto de Windows de Ogre3D admite múltiples contextos de representación, por lo que esto tampoco debería ser un problema. Espero que también funcione con múltiples ventanas en otros sistemas, pero no lo he usado en ningún otro sistema, así que no puedo decir con certeza.

Mi suposición inmediata, sin embargo, es que el soporte del monitor triple será casi intrascendente en su esfuerzo general de desarrollo. Por supuesto, significa significa que usted (puede decirle a su jefe) necesita una configuración de monitor triple para el desarrollo y las pruebas, que sin duda no es algo malo. :-)

Editar: OpenGL por sí solo no especifica nada acerca de las ventanas de pantalla completa frente a las ventanas normales. Si la memoria sirve, al menos en Windows para obtener una aplicación de pantalla completa, usa ChangeDisplaySettings con CDS_FULLSCREEEN. Después de eso, trata esencialmente todo el escritorio virtual como una sola ventana. No recuerdo haberlo hecho con múltiples monitores, así que no puedo decir mucho con gran certeza.

+0

Hola Jerry, gracias por tu respuesta. No es necesariamente una ventana separada para cada pantalla, porque necesita estar en pantalla completa en cada pantalla (no estoy seguro de si este tipo de salida depende de una ventana o pasa por alto el sistema de ventanas). ¿Cuál es tu opinión? – user16120

+0

lo mismo es cierto para LINUX: si está utilizando monitores múltiples, normalmente está usando Xinerama, que crea una gran pantalla virtual. – Tilo

3

Hay varias cosas que decir acerca del soporte de cabezales múltiples en el caso de OGRE3D. En mi experiencia, una solución de trabajo es usar la versión fuente de Ogre 1.6.1 y aplicar this patch. Usando este parche, los usuarios han logrado renderizar una aplicación Ogre en un 6 monitors configuration.

Personnaly, he aplicado con éxito este parche, y lo he usado con el StereoManager plugin para conectar aplicaciones Ogre con un proyector 3D. Solo usé el backend de Direct3D9. El complemento StereoManager viene con una demostración modificada (Fresnel_Demo), que puede ayudarlo a configurar su primera aplicación de cabezales múltiples.

También debo agregar que el parche multicabezal ahora es parte del núcleo Ogre, a partir de la versión 1.7. Ogre1.7 se lanzó recientemente como RC1, por lo que esta podría ser la forma más rápida y sencilla de hacerlo funcionar.

Cuestiones relacionadas