Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.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++ 如何使用SDL2获得屏幕分辨率?_C++_Screen_Fullscreen_Sdl 2 - Fatal编程技术网

C++ 如何使用SDL2获得屏幕分辨率?

C++ 如何使用SDL2获得屏幕分辨率?,c++,screen,fullscreen,sdl-2,C++,Screen,Fullscreen,Sdl 2,我正在使用像素完美的源图像和SDL2来制作一个程序。当设置为全屏时,我希望它使用本机分辨率(SDL_WINDOW_fullscreen_DESKTOP标志),但仅在某个最小分辨率和合理的最大分辨率之间,之后它将从最大的法定分辨率延伸。问题是,我只能在SDL2文档中找到对程序自身窗口或程序大小的引用 SDL中是否有任何函数可以让我至少直接检索屏幕宽度和高度 或者我应该使用SDL_WINDOW_FullScreen_DESKTOP,然后使用SDL_GetWindowsSize()并再次调整窗口大小

我正在使用像素完美的源图像和SDL2来制作一个程序。当设置为全屏时,我希望它使用本机分辨率(SDL_WINDOW_fullscreen_DESKTOP标志),但仅在某个最小分辨率和合理的最大分辨率之间,之后它将从最大的法定分辨率延伸。问题是,我只能在SDL2文档中找到对程序自身窗口或程序大小的引用


SDL中是否有任何函数可以让我至少直接检索屏幕宽度和高度


或者我应该使用SDL_WINDOW_FullScreen_DESKTOP,然后使用SDL_GetWindowsSize()并再次调整窗口大小?这会像预期的那样起作用吗?我想要一个比这更优雅的解决方案。感觉很脏。

在SDL2wiki中,您有一个名为的类别。它列出了您需要了解的有关SDL2显示器(屏幕)和窗口管理的所有信息

您有多种选择,最常用的是使用或。wiki中解释了这种差异:

当SDL全屏运行并更改分辨率时,SDL_GetDesktopDisplayMode()和SDL_GetCurrentDisplayMode()之间存在差异。在这种情况下,SDL_GetDesktopDisplayMode()将返回以前的本机显示模式,而不是当前的显示模式

使用其中一个设置后,可以检索其属性
w
h

但是,还有一个函数可能更合适、更直接:。如果我没有弄错的话,它会给出显示器相对于计算机上可以激活的整套显示器的坐标,以及显示器的大小

这两种方法都需要您知道想要了解的显示的索引。我对SDL2的这一部分没有太多的了解,但我想你可以用它来获取显示的数量(并检查是否至少有一个?——我认为如果没有可用的显示,
SDL_窗口
部分可能无法工作),然后选择一个。或者您可以选择第一个索引为0的


哦,你可以看看上面的例子,他们有效地检索了显示器的大小。

我在询问之前做了研究,但我的noobeness不允许我看到这正是我想要的。明天我会尝试应用它,然后将响应标记为有效,这听起来比我预期的更好。正如预期的那样,它运行良好且顺利。现在我甚至可以免费将帧速率调整到本机设置!“当SDL全屏运行并更改分辨率时,此函数与SDL_GetDesktopDisplayMode之间存在差异。在这种情况下,此函数将返回当前显示模式,而不是以前的本机显示模式。”但至少在Android上,
SDL_GetCurrentDisplayMode
仍会发生这种情况。感谢
SDL\u GetDisplayBounds
不知道这一点,但它返回相同的结果。只有
data1
data2
成员是准确的,但它们似乎只是事件持续时间的一部分。。