为多个显示器设置OpenGL

时间:2014-08-19 22:21:10

标签: c++ c winapi opengl multiple-monitors

我正在Windows 7计算机上开始OpenGL编程,我的应用程序由全屏窗口组成,每个监视器都有一个单独的窗口和线程。有一个连续场景需要采取的步骤是什么?我仍然对许多OpenGL概念以及如何处理这个问题感到困惑。它与单个监视器渲染基本相同,除了视图矩阵和上下文额外工作,还是更复杂?

编辑: 我找到了一个包含信息的网站,但它含糊不清,没有示例代码: http://www.rchoetzlein.com/theory/2010/multi-monitor-rendering-in-opengl/

1 个答案:

答案 0 :(得分:3)

我的第一个问题是你为什么需要两个不同的OpenGL窗口?

您是否考虑过游戏行业已经使用的解决方案?许多支持多显示器设置的3D应用程序和游戏实际上并不管理自己独立的窗口,而是让GPU管理多个屏幕上的渲染。我今年在一个项目中使用了这个,在电视屏幕上有一个眼睛裂缝视图和旁观者视图。我没有管理两个OpenGL场景,只有两个不同的“相机”。

http://www.amd.com/en-us/innovations/software-technologies/eyefinity

http://www.nvidia.com/object/3d-vision-surround-technology.html

<强>赞成

  • 更容易编码。您只需将代码视为一个场景,不需要奇怪的场景管理。
  • 优雅的退化。如果您的用户只有一个屏幕而不是两个屏幕,那么您的应用程序仍会表现得很好,只有几个UI细节。
  • 更好的表现(轶事)。在我自己的项目中,我发现使用两个不同的3D窗口会有更好的表现。

<强>缺点

  • 缺乏控制。你是在驱动程序提供商的要求下。例如,nVidia环绕声要求无论出于何种原因在SLI中设置GPU。
  • 有限的支持。只有相对较新的显卡才支持这种多显示器技术。
  • 效果最好的屏幕是相同的分辨率。处理不同的宽高比甚至相同宽高比的分辨率可能是困难的。
  • 不方便。当用户可能拥有自己的首选模式时,他们必须将他们的计算机设置为处于多监视器模式。