使用SDL 1.3我想在linux下创建假全屏SDL_Window。如果我只有一个显示器很容易。 我刚刚获得当前显示模式并创建了一个窗口。SDL假全屏模式在Linux下的双显示器设置
SDL_GetDesktopDisplayMode(0, &mode);
SDL_Window *win = SDL_CreateWindow("my window",
0,0,mode.w, mode.h,
SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN | SDL_WINDOW_BORDERLESS);
但是,当我有两个显示器,事情变得复杂。该窗口分布在多个显示器上。 SDL只能看到一个双倍大小的虚拟显示器。
我与此代码测试它
int num = SDL_GetNumVideoDisplays();
for(int i=0; i < num; i++)
{
SDL_Rect displayRect;
SDL_GetDisplayBounds(i, &displayRect);
std::cout
<< "display " << i << ": x,y,w,h("
<< displayRect.x << ", "
<< displayRect.y << ", "
<< displayRect.w << ", "
<< displayRect.h << ")"
<< std::endl;
}
输出:
display 0: x,y,w,h(0, 0, 2960, 1050)
但是我有两个显示器(1680×1050 1280×1024和)。
如何强制窗口停留在只有一个(假设主)显示?
+1有趣。这似乎是在操作系统的选择,我不知道你可以做任何事情。 – karlphillip
你使用多种监视器的方法是什么?Xinerama?Xrandr?Nvidia twinview?在你的xorg.conf文件中单独显示屏幕? – genpfault
@genpfault:我在默认设置下(使用gnome-shell)使用fedora 15。 xrandr可能(我不是linux专家),但它也可以在其他机器上工作 – Frizi