c++ - 多显示器 3D 应用程序

标签 c++ opengl direct3d ogre3d

我遇到了一个 C++ 3D 应用程序项目的挑战,该项目将使用 3 个显示器,每个显示器都来自不同的相机。

最近了解了Ogre3D,但不清楚它是否支持不同相机输出到不同显示器/GPU。

有没有人有类似设置和 Ogre 或其他引擎的经验?

最佳答案

至少在大多数系统(例如 Windows、MacOS)上,窗口系统会创建一个虚拟桌面,不同的显示器映射到桌面的不同部分。如果您愿意,您可以(例如)创建一个覆盖所有三个显示器的大窗口。如果您将该窗口设置为使用 OpenGL,几乎任何使用 OpenGL 的东西(几乎可以肯定包括 Ogre3D)都可以正常工作,尽管在某些情况下产生那么多的输出分辨率可能会使显卡负担过重,以至于它比平时慢一点.

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

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

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

编辑:OpenGL 本身没有指定任何有关全屏窗口与普通窗口的信息。如果没记错的话,至少在 Windows 上要获得全屏应用程序,您可以使用 ChangeDisplaySettingsCDS_FULLSCREEEN。之后,它基本上将整个虚拟桌面视为一个窗口。不过,我不记得在多台显示器上做过这件事,所以我不能说太多。

关于c++ - 多显示器 3D 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2023699/

相关文章:

c++ - 直接 3D 影响数据类型 double

c++ - 我可以在cplusplus中使用/usr/include/c++/4.7/ext/bitmap_allocator.h中的bitmap_allocator吗?

c++ - 服务没有及时响应启动或控制请求

opengl - 将四元数旋转转换为旋转矩阵?

c++ - Opengl VAO 被覆盖

opengl - glBindAttribLocation 无法按预期工作

c++ - 反转字符串 C++

c++ - C++ 静态初始化在同一个回溯中出现两次是否正常?

math - 在 Direct3D 中使用像素着色器绘制旋转球体

c# - 投影矩阵导致裁剪空间深度计算不准确?