多显示器3D应用程序

时间:2010-01-07 21:10:10

标签: c++ opengl direct3d ogre3d

我受到了C ++ 3D应用程序项目的挑战,该项目将使用3个显示器,每个显示器都使用不同的相机进行渲染。

最近我了解了Ogre3D,但目前尚不清楚它是否支持将不同摄像头输出到不同的显示器/ GPU。

有没有人对类似的安装程序和Ogre或其他引擎有任何经验?

2 个答案:

答案 0 :(得分:3)

至少在大多数系统(例如,Windows,MacOS)上,窗口系统创建虚拟桌面,其中不同的监视器映射到桌面的不同部分。如果你愿意,你可以(例如)创建一个覆盖所有三个显示器的大窗口。如果您将该窗口设置为使用OpenGL,几乎任何使用OpenGL的东西(几乎可以肯定包括Ogre3D)都可以正常工作,但在某些情况下产生如此多的输出分辨率会使显卡的价格低于通常的速度

如果你想在每个显示器上处理一个单独的窗口,事情可能会更复杂一些。 OpenGL本身不会(甚至尝试)定义如何在多个窗口中处理显示 - 这取决于特定于平台的功能集。例如,在Windows上,每个窗口都有一个渲染上下文,并且必须使用WGLMakeCurrent来选择在任何给定时间绘制的渲染上下文。

如果内存服务,Ogre3D的Windows端口支持多个渲染上下文,所以这也不应该是一个问题。我希望它也适用于其他系统上的多个窗口,但我没有在任何其他系统上使用它,所以我不能肯定地说。

然而,我的直接猜测是,在您的整体开发工作中,三重监视器支持几乎无关紧要。当然,它 意味着你(可以告诉你的老板)需要一个三重监视器设置来进行开发和测试,这当然不是一件坏事! : - )

编辑:OpenGL本身并未指定有关全屏窗口与普通窗口的任何内容。如果内存服务,至少在Windows上用于获取全屏应用程序,则使用ChangeDisplaySettingsCDS_FULLSCREEEN。之后,它将整个虚拟桌面视为单个窗口。我不记得曾经用多台显示器做过这样的事情,所以我不能说任何确定的事情。

答案 1 :(得分:3)

关于OGRE3D的多头支持,有几点需要说明。根据我的经验,一个有效的解决方案是使用Ogre 1.6.1的源版本并应用this patch。 使用此补丁,用户已设法在6 monitors configuration上呈现Ogre应用程序。

Personnaly,我已经成功应用了这个补丁,并将其与StereoManager plugin一起用于将Ogre应用程序与3D投影仪连接起来。我只使用了Direct3D9后端。 StereoManager插件附带一个经过修改的演示(Fresnel_Demo),可以帮助您设置第一个多头应用程序。

我还应该补充一点,多版本补丁现在是Ogre核心的一部分,从版本1.7开始。 Ogre1.7最近作为RC1发布,所以这可能是让它工作的最快捷,最简单的方法。