2010-01-07 6 views
8

나는 각각 다른 카메라에서 렌더링되는 3 개의 디스플레이를 사용하는 C++ 3D 응용 프로그램 프로젝트에 어려움을 겪었습니다.다중 모니터 3D 응용 프로그램

최근 Ogre3D에 대해 알게되었지만 다른 디스플레이/GPU에서 다른 카메라의 출력을 지원하는지는 분명하지 않습니다.

누구나 비슷한 설정 및 오우거 또는 다른 엔진에 대한 경험이 있습니까?

답변

3

적어도 대부분의 시스템 (예 : Windows, MacOS)에서는 윈도우 시스템이 가상 데스크탑을 만들고 다른 모니터는 데스크탑의 다른 부분에 매핑됩니다. 원하는 경우 (예를 들어) 세 가지 디스플레이를 모두 커버하는 큰 창 하나를 만들 수 있습니다. OpenGL을 사용하도록 해당 창을 설정하면 OpenGL을 사용하는 거의 모든 기능 (Ogre3D를 포함한 거의 모든 기능)은 정상적으로 작동하지만 일부 출력 해상도를 생성하는 경우 그래픽 카드에 평소보다 약간 느린 세금이 부과 될 수 있습니다 .

각 디스플레이에서 별도의 창을 처리하려는 경우 다소 복잡 할 수 있습니다. OpenGL 자체는 여러 창에서 디스플레이를 처리하는 방법을 정의하지도 않습니다. 플랫폼 별 기능 세트까지입니다. 예를 들어, Windows에서는 각 창에 대한 렌더링 컨텍스트가 있으며 WGLMakeCurrent을 사용하여 주어진 시간에 그리는 렌더링 컨텍스트를 선택해야합니다.

메모리가 작동하는 경우 Ogre3D의 Windows 포트는 여러 렌더링 컨텍스트를 지원하므로 문제가되지 않습니다. 나는 다른 시스템에서도 여러 창과 함께 작동 할 것으로 기대하지만, 다른 시스템에서는 사용하지 않았기 때문에 확실하게 말할 수는 없습니다.

그러나 제 생각에 트리플 모니터 지원은 전반적인 개발 노력에서 거의 중요하지 않습니다. 물론, 입니다 (당신의 상사에게 말할 수 있음) 개발 및 테스트를위한 트리플 모니터 설정이 필요하다는 것을 의미합니다. 물론 나쁜 것은 아닙니다! :-)

편집 : OpenGL 자체는 전체 화면 창과 일반 창에 대해 아무것도 지정하지 않습니다. 적어도 전체 화면 응용 프로그램을 얻으려면 Windows에서 메모리가 작동하면 ChangeDisplaySettingsCDS_FULLSCREEEN을 사용합니다. 그런 다음 가상 데스크톱 전체를 단일 창으로 처리합니다. 나는 여러 대의 모니터로 그렇게 한 것을 기억하지 못하므로 어떤 확실성으로도 많이 말할 수는 없습니다.

+0

안녕하세요 제리, 대답 해주세요. 각 디스플레이에서 전체 화면이어야하기 때문에 반드시 각 디스플레이에 대해 별도의 창이 필요하지는 않습니다.이 출력이 창에 종속되어 있는지 또는 윈도우 시스템을 우회하는지는 확실하지 않습니다. 당신의 의견 것입니다? – user16120

+0

LINUX도 마찬가지입니다. 다중 모니터를 사용하는 경우 대개 하나의 거대한 가상 화면을 만드는 Xinerama를 사용하고 있습니다. – Tilo

3

OGRE3D의 경우 멀티 헤드 지원에 대해 여러 가지 사항이 있습니다. 내 경험에 의하면, 작동하는 해결책은 Ogre 1.6.1의 소스 버전을 사용하고 this patch을 적용하는 것입니다. 이 패치를 사용하여 사용자는 6 monitors configuration에 Ogre 응용 프로그램을 렌더링 할 수있었습니다.

필자는 성공적으로이 패치를 적용하고 StereoManager plugin과 함께 사용하여 Ogre 응용 프로그램을 3D 프로젝터에 연결합니다. Direct3D9 백엔드 만 사용했습니다. StereoManager 플러그인은 수정 된 데모 (Fresnel_Demo)와 함께 제공되므로 첫 번째 멀티 헤드 애플리케이션을 설정할 때 유용합니다.

멀티 헤드 패치가 이제 버전 1.7에서 Ogre 코어의 일부라고 추가해야합니다. Ogre1.7은 최근에 RC1로 출시되었으므로 이것이 가장 빠르고 쉬운 방법 일 것입니다.