gpt4 book ai didi

c++ - 如何使用 SDL2 获取屏幕分辨率?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:08 28 4
gpt4 key购买 nike

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


SDL 中是否有任何函数可以从中至少几乎直接检索屏幕宽度和高度?

或者我应该使用 SDL_WINDOW_FULLCREEN_DESKTOP 然后使用 SDL_GetWindowSize() 并再次调整窗口大小?这甚至会按预期工作吗?我想找到一个比这更优雅的解决方案。感觉很脏。

最佳答案

在 SDL 2 wiki 中,您有一个名为 Display and Window Management 的类别.它列出了您需要了解的有关 SDL 2 显示(屏幕)和窗口管理的所有信息。

您有多种选择,最通用的是使用 SDL_GetCurrentDisplayModeSDL_GetDesktopDisplayMode . wiki 中解释了差异:

There's a difference between SDL_GetDesktopDisplayMode() and SDL_GetCurrentDisplayMode() when SDL runs fullscreen and has changed the resolution. In that case SDL_GetDesktopDisplayMode() will return the previous native display mode, and not the current display mode.

设置 SDL_DisplayMode 后使用其中之一,您可以检索其属性 wh

然而,还有另一个函数可能更合适和直接:SDL_GetDisplayBounds .如果我没记错的话,它会为您提供显示器相对于可以在计算机上激活的整组显示器的坐标,以及显示器的尺寸。

这两种方法都需要您知道您想了解的显示器的索引。我没有玩过 SDL 2 的这一部分,但我想你可以使用 SDL_GetNumVideoDisplays获取显示器的数量(并检查是否至少有一个? - 我认为如果没有可用的显示器, SDL_Window 部分可能无法工作)并选择一个。或者您可以选择索引为 0 的第一个。

哦,你可以看看 the page of SDL_GetCurrentDisplayMode 上的例子, 它们有效地检索了显示器的尺寸。

关于c++ - 如何使用 SDL2 获取屏幕分辨率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25594714/

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