两个不同的屏幕上的两个窗口全屏

时间:2010-04-26 09:53:34

标签: c++ linux fullscreen

我实际上正在开发一个应用程序来将图像显示在圆顶上。

圆顶投影系统由两台投影机和一台运行GentoO Linux和KDE的电脑组成,配有nvidia TwinView系统。

由于我在这里使用SDL来显示全屏窗口,它将我的应用程序显示在两个屏幕上。

但我只想到我需要投影两个不同的图像,每个投影仪一个。

这就是为什么我搜索在第一个屏幕(投影仪)上显示全屏窗口而在另一个屏幕上显示另一个窗口的解决方案。但是SDL全屏只是将窗口扩展到两个屏幕。

我可以使用任何librairie(因为它轻巧自由,因为我将它包装到我的小“API”中),或更改显示设置。 BTW支持openGL会很好,因为SDL只管理一个窗口^^“

3 个答案:

答案 0 :(得分:1)

我想我有一个解决方案。您需要了解与'xinerama'USE标志相关的所有内容。然后在X配置中设置元模式或为每个屏幕使用nvidia-settings。这使您的显示器看起来像驱动程序的一个屏幕,但通知窗口管理器您的独立屏幕边界。现在,您可以在窗口之间来回拖动,并且可以在每个窗口上进行独立全屏。耶!

注意:我已经在Gnome上成功测试了这个,但还没有在KDE上测试过。

祝你好运!

编辑:忘了提及那么你仍然需要弄清楚如何使你的应用程序能够识别元模式。 :P

答案 1 :(得分:1)

很好的技巧,但它不是真正的解决方案。

您需要使用SDL 1.3(未在1.2上实现)并调用SDL_SelectVideoDisplay(index_of_mmonitor)(第一个监视器通常为0,第二个监视器通常为1),因此您可以将SDL工作输出定向到您喜欢的屏幕上(全屏与否)

问候。

答案 2 :(得分:0)

我的猜测是 SDL (或者更确切地说是 OpenGL ,或者它后面用来显示图形的任何东西)认为你只有一个大的屏幕

因此,在不同的屏幕上显示两个不同的东西是没有意义的(因为你只有一个屏幕)。

也许我错了,但你应该尝试使用单独的X桌面来做到这一点。我现在不在我的linux机箱上,所以我无法帮助我,但如果我记得很清楚,有一个选项可以让两个不同的台式机没有两个不同的X服务器。

另一个“解决方案”是计算屏幕的坐标/边界,并巧妙地在一个模拟屏幕上显示内容,但是:

  1. 很难看
  2. 容易出错
  3. 我不喜欢