Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Linux上使用SDL2确定最大窗口大小_C++_Linux_Graphics_Sdl_Sdl 2 - Fatal编程技术网

C++ 在Linux上使用SDL2确定最大窗口大小

C++ 在Linux上使用SDL2确定最大窗口大小,c++,linux,graphics,sdl,sdl-2,C++,Linux,Graphics,Sdl,Sdl 2,我想在初始化期间确定当前显示器上可能的最大窗口大小,以确定设置是否有效。我能找到的唯一方法是创建一个临时最大化窗口并调用SDL\u GetWindowSize()。这在macOS上正常工作,但在Linux上失败 这是我的密码: int最大宽度、最大高度; SDL_Window*测试_Window=SDL_CreateWindow(“测试_Window”), SDL窗口位置居中显示(当前显示id), SDL窗口位置居中显示(当前显示id), 20,10,//没有这么小的显示器 SDL_窗口可调整大

我想在初始化期间确定当前显示器上可能的最大窗口大小,以确定设置是否有效。我能找到的唯一方法是创建一个临时最大化窗口并调用
SDL\u GetWindowSize()
。这在macOS上正常工作,但在Linux上失败

这是我的密码:

int最大宽度、最大高度;
SDL_Window*测试_Window=SDL_CreateWindow(“测试_Window”),
SDL窗口位置居中显示(当前显示id),
SDL窗口位置居中显示(当前显示id),
20,10,//没有这么小的显示器
SDL_窗口可调整大小| SDL_窗口最大化
);
SDL_GetWindowSize(测试窗口、最大宽度和最大高度);
在macOS上,“最大宽度”和“最大高度”正确设置为最大窗口大小。但是在Linux上,它们被设置为20和10

有人能告诉我为什么这在Linux上不起作用吗?有没有更好的方法来完成同样的事情


编辑:也许我对最大窗口大小的含义不够清楚。大多数操作系统都有某种限制显示器可用区域的任务栏/驳接,因此“最大窗口大小”不等于通过
SDL\u GetDesktopDisplayMode()

获得的显示器大小。请参见此问题,它应该适用于所有系统。不幸的是,显示器的大小与我所说的最大窗口大小并不完全相同。可以有任务栏/停靠点/任何可以减少windows可用大小的东西。我可以问一下您为什么需要它(现在听起来像是XY问题)吗?您的应用程序界面应该能够适应任何合理的窗口大小(对于“合理”的某些定义)。所讨论的应用程序是一款需要80x24字符(标准字体大小为640x384)最小分辨率的诅咒游戏。我正在尝试向SDL curses端口添加一个“缩放因子”选项,该选项使用
SDL\u RenderSetLogicalSize()
将整个游戏缩放2倍或4倍,主要用于用户界面难以读取的高dpi系统。这种缩放自然会增加游戏的最小尺寸,我需要检查是否有可能以所需的缩放因子创建窗口,如果显示器没有足够的可用空间,则返回到1x。