2010-04-26 105 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工作輸出指向您的首選屏幕(全屏或不全屏)。

問候。

相關問題