2010-04-26 203 views
1

我实际上正在开发一个应用程序来在圆顶上显示图像。两个窗口全屏在两个不同的屏幕上

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

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

但我只是想,我需要投影两个不同的图像,每个投影机上。

这就是为什么我寻找一个解决方案,在第一个屏幕(投影机)上显示全屏窗口,第二个屏幕上显示另一个窗口。但SDL全屏只是将窗口扩展到两个屏幕。

我可以使用任何图书馆(因为它轻盈自由,因为我会将它包装到我的小API中)或更改显示设置。 BTW这将是不错的OpenGL支持,因为SDL管理只有一个窗口^^”

+0

您是在使用“大屏幕”仿真还是在两个独立的X服务器上? – ereOn 2010-04-26 09:56:44

+0

双视图模仿我认为的大屏幕,但我认为我可以尝试两个单独的X sevrer。但是,我是否可以设置一个桌面,并且可以启动一个应用程序,每个应用程序都可以带来一个窗口? – sirithang 2010-04-26 10:00:39

+0

请参阅下面的答案。我怀疑你可以使用我的建议将应用程序从一个屏幕带到另一个屏幕。 – ereOn 2010-04-26 10:34:30

回答

0

我的猜测是,SDL(或者更确切地说的OpenGL,或任何其使用的背后显示图形),相信你只有一个大屏幕

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

也许我错了,但你应该尝试使用单独的X台式机要做到这一点。我现在不在我的Linux机器上,所以我无法提供尽可能多的帮助,但如果我记得很清楚,可以选择在两台不同的X服务器上安装两台独立的台式机。

另一种“解决方案”是计算你的屏幕坐标/界限,你一个模拟的屏幕上巧妙地显示的东西,但:

  1. 这是丑陋的
  2. 容易出错
  3. 我不t喜欢它
+0

引用您的意见:如果您要在特定显示器上启动应用程序,只需在启动应用程序之前在命令行中使用:export DISPLAY =:0.1(或任何所需的显示编号)。 – ereOn 2010-04-26 10:40:25

+0

为两个不同的桌面,是的,我认为这是可能的,但SDL可以只创建一个窗口,所以我不能在全屏不同的显示中创建两个窗口。你会碰巧知道一个可以很容易地显示多个窗口的图书馆,支持OpenGl渲染,甚至可以显示一个图像(因为我可以创建一个像素数组)。 – sirithang 2010-04-26 10:52:36

+0

我想你可以直接使用* OpenGL *。但我必须承认,我很惊讶* SDL *本身不能做这样的事情。你也可以看看http://www.ogre3d.org/,但我不知道你想达到什么目的。 – ereOn 2010-04-26 12:05:12

1

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

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

祝你好运!

编辑:忘记提及,那么你仍然需要弄清楚如何让你的应用程序成为元模式意识。 :p

1

不错的诀窍,但它不是一个真正的解决方案。

您需要使用SDL 1.3(未在1.2中实现)并调用SDL_SelectVideoDisplay(index_of_mmonitor)(通常为第一个监视器为0,第二个为1),以便您可以将SDL工作输出指向您的首选屏幕(全屏或不全屏)。

问候。

相关问题