gpt4 book ai didi

c++ - SDL2 中的多个显示

转载 作者:太空狗 更新时间:2023-10-29 21:44:59 25 4
gpt4 key购买 nike

我正在编写一个程序来显示取决于显示器大小的动画。为了让它适用于多个显示器,我有一个 display_data 对象数组:

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 的预期行为还是错误?在任何一种情况下,任何人都可以提出解决方法吗?

编辑:鼠标依赖项出现在带有 XFCE 的 Debian 上。我也在 Windows 上尝试过,无论鼠标位置如何,它都会在第二台显示器上输出两个窗口。

最佳答案

您可以在 SDL_CreateWindow 的位置参数中使用 SDL_WINDOWPOS_UNDEFINED_DISPLAY 宏,并结合 SDL_WINDOW_FULLSCREEN 参数。

类似于:

SDL_CreateWindow(
"Window Name",
SDL_WINDOWPOS_UNDEFINED_DISPLAY(display),
SDL_WINDOWPOS_UNDEFINED_DISPLAY(display),
0,
0,
SDL_WINDOW_FULLSCREEN),

这个宏没有很好的文档,但是你可以通过阅读源代码清楚地看到它是如何工作的。

关于c++ - SDL2 中的多个显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18728821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com