我正在編寫一個程序,顯示取決於顯示大小的動畫。爲了得到這個與多個顯示器的工作,我有display_data對象的數組:SDL2中的多個顯示
struct window_data
{
SDL_Rect bounds;
SDL_Window *window;
};
和初始化這些爲每個顯示:
int numdisplays = SDL_GetNumVideoDisplays();
std::vector<window_data> screens(numdisplays);
for(int i = 0 ; i < numdisplays ; ++i)
{
SDL_GetDisplayBounds(i, &(screens[ i ].bounds));
screens[ i ].window
= SDL_CreateWindow("Display", screens[ i ].bounds.x,
screens[ i ].bounds.y, screens[ i ].bounds.w,
screens[ i ].bounds.h, SDL_WINDOW_FULLSCREEN);
}
這,只要我的鼠標光標正常工作在主顯示屏中,但是如果我使用輔助顯示屏中的光標啓動程序,它將在輔助顯示屏中繪製兩個窗口,從而僅顯示第二個窗口。這種行爲似乎只取決於光標的位置,而不是我運行程序的終端窗口。
我已驗證無論光標位置如何,都會找到相同的顯示編號和邊界,所以我對程序行爲的變化感到困惑。這是SDL2的預期行爲還是錯誤?無論哪種情況,任何人都可以提出解決方法?
編輯:鼠標依賴關係顯示在Debian與XFCE。我也在Windows上嘗試過這種方式,無論鼠標位置如何,它都會在第二臺顯示器上輸出這兩個窗口。
如何首先啓動的第一個窗口,等待用點擊它然後開始第二。 – this
只要仔細檢查一下,'SDL_GetNumVideoDisplays()'事實上是否會在雙頭Linux機器上返回'2'? [返回當天](http://stackoverflow.com/questions/7927974/sdl-fake-fullscreen-mode-on-dual-monitor-setup-under-linux)多顯示器API有一些問題。 – genpfault
是的。顯示數量:2 窗口#0:x = 0 y = 0 w = 1280 h = 1024 窗口#1:x = 0 y = 1024 w = 1280 h = 800 – trm