我遇到了一个 C++ 3D 应用程序项目的挑战,该项目将使用 3 个显示器,每个显示器都来自不同的相机。
最近了解了Ogre3D,但不清楚它是否支持不同相机输出到不同显示器/GPU。
有没有人有类似设置和 Ogre 或其他引擎的经验?
最佳答案
至少在大多数系统(例如 Windows、MacOS)上,窗口系统会创建一个虚拟桌面,不同的显示器映射到桌面的不同部分。如果您愿意,您可以(例如)创建一个覆盖所有三个显示器的大窗口。如果您将该窗口设置为使用 OpenGL,几乎任何使用 OpenGL 的东西(几乎可以肯定包括 Ogre3D)都可以正常工作,尽管在某些情况下产生那么多的输出分辨率可能会使显卡负担过重,以至于它比平时慢一点.
如果你想在每个显示器上处理一个单独的窗口,事情可能会有点复杂。 OpenGL 本身并不(甚至试图)定义如何处理多个窗口中的显示——这取决于一组特定于平台的函数。例如,在 Windows 上,每个窗口都有一个渲染上下文,并且必须使用 WGLMakeCurrent
来选择在任何给定时间绘制到哪个渲染上下文。
如果没记错的话,Ogre3D 的 Windows 端口支持多个渲染上下文,所以这也应该不是问题。我希望它也可以在其他系统上使用多个窗口,但我没有在任何其他系统上使用过它,所以我不能肯定地说。
不过,我的直接猜测是,三重监视器支持在您的整体开发工作中几乎无关紧要。当然,这确实意味着您(可以告诉您的老板)需要三重显示器设置来进行开发和测试,这当然不是一件坏事! :-)
编辑:OpenGL 本身没有指定任何有关全屏窗口与普通窗口的信息。如果没记错的话,至少在 Windows 上要获得全屏应用程序,您可以使用 ChangeDisplaySettings
和 CDS_FULLSCREEEN
。之后,它基本上将整个虚拟桌面视为一个窗口。不过,我不记得在多台显示器上做过这件事,所以我不能说太多。
关于c++ - 多显示器 3D 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2023699/