Oxy*_*Oxy 6 c++ screen fullscreen sdl-2
我正在使用像素完美的源图像和SDL2来制作程序.当设置为全屏,我想它使用原生分辨率(SDL_WINDOW_FULLSCREEN_DESKTOP标志),但只有在一定的最小分辨率和合理的最大一个,之后它将从最大的法律解决舒展之间.问题是我只能在SDL2文档中找到对程序自己的窗口或程序大小的引用.
在SDL中是否有任何功能可以从中检索屏幕宽度和高度,至少几乎是直接?
或者我应该做一些事情,比如使用SDL_WINDOW_FULLCREEN_DESKTOP然后再使用SDL_GetWindowSize()并再次调整窗口大小?这甚至可以按预期工作吗?我想要一个更优雅的解决方案.感觉很脏.
Nel*_*eal 12
在SDL 2 wiki中,您有一个名为Display and Window Management的类别.它列出了您需要了解的有关SDL 2管理显示器(屏幕)和窗口的所有信息.
你有多种选择,最通用的是使用SDL_GetCurrentDisplayMode或SDL_GetDesktopDisplayMode.不同之处在wiki中解释:
当SDL全屏运行并更改了分辨率时,SDL_GetDesktopDisplayMode()和SDL_GetCurrentDisplayMode()之间存在差异.在这种情况下,SDL_GetDesktopDisplayMode()将返回先前的本机显示模式,而不是当前的显示模式.
SDL_DisplayMode使用其中一个设置后,您可以检索其属性w和h.
但是,还有另一个功能可能更合适,更直接:SDL_GetDisplayBounds.如果我没有弄错的话,它会显示相对于计算机上可以激活的整个显示器的显示坐标,以及显示器的大小.
这两种方法都需要您知道要了解的显示的索引.我没有玩过SDL 2的这一部分那么多,但我想你可以SDL_GetNumVideoDisplays用来获取显示器的数量(并检查是否至少有一个? - 我认为SDL_Window如果没有可用的显示器,该部件可能无法工作)并选择一个.或者你可以选择第一个,索引为0.
哦,你可以看看页面SDL_GetCurrentDisplayMode上的例子,它们有效地检索了显示器的大小.