如何在 SDL 中获取屏幕尺寸
How to get screen size in SDL
我正在尝试使用 SDL 和 C++ 编写程序。如何在 SDL 中获取屏幕的宽度和高度(以像素为单位)?我试图获取屏幕的宽度而不是 window 的宽度。 . . .
在 SDL2 中,根据需要使用 SDL_GetCurrentDisplayMode
or SDL_GetDesktopDisplayMode
。使用示例:
SDL_DisplayMode DM;
SDL_GetCurrentDisplayMode(0, &DM);
auto Width = DM.w;
auto Height = DM.h;
在高 DPI 显示器上,这将 return 虚拟分辨率,而不是物理分辨率。
来自 SDL2 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_GetRendererOutputSize
可以很容易地完成
您只需像这样传递 SDL_Renderer*
:
int w, h;
SDL_GetRendererOutputSize(renderer, &w, &h);
void SDL_GetRendererOutputSize(SDL_Renderer* renderer,
int* w,
int* h)
渲染器渲染上下文
w
用渲染器的宽度填充的指针
h
填充渲染器高度的指针
在非全屏模式下:
使用SDL_GetDesktopDisplayMode()
SDL_DisplayMode dm;
if (SDL_GetDesktopDisplayMode(0, &dm) != 0)
{
SDL_Log("SDL_GetDesktopDisplayMode failed: %s", SDL_GetError());
return 1;
}
int w, h;
w = dm.w;
h = dm.h;
请检查错误!否则当 SDL_GetDesktopDisplayMode
失败时,你会讨厌自己的生活!
我正在尝试使用 SDL 和 C++ 编写程序。如何在 SDL 中获取屏幕的宽度和高度(以像素为单位)?我试图获取屏幕的宽度而不是 window 的宽度。 . . .
在 SDL2 中,根据需要使用 SDL_GetCurrentDisplayMode
or SDL_GetDesktopDisplayMode
。使用示例:
SDL_DisplayMode DM;
SDL_GetCurrentDisplayMode(0, &DM);
auto Width = DM.w;
auto Height = DM.h;
在高 DPI 显示器上,这将 return 虚拟分辨率,而不是物理分辨率。
来自 SDL2 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_GetRendererOutputSize
您只需像这样传递 SDL_Renderer*
:
int w, h;
SDL_GetRendererOutputSize(renderer, &w, &h);
void SDL_GetRendererOutputSize(SDL_Renderer* renderer, int* w, int* h)
渲染器渲染上下文
w 用渲染器的宽度填充的指针
h 填充渲染器高度的指针
在非全屏模式下:
使用SDL_GetDesktopDisplayMode()
SDL_DisplayMode dm;
if (SDL_GetDesktopDisplayMode(0, &dm) != 0)
{
SDL_Log("SDL_GetDesktopDisplayMode failed: %s", SDL_GetError());
return 1;
}
int w, h;
w = dm.w;
h = dm.h;
请检查错误!否则当 SDL_GetDesktopDisplayMode
失败时,你会讨厌自己的生活!