如何在SDL中获取屏幕大小
How to get screen size in SDL
我正在尝试使用SDL和C++制作一个程序。如何在SDL中获得以像素为单位的屏幕宽度和高度?我想得到屏幕的宽度,而不是窗口的宽度。
在SDL2中,根据需要使用SDL_GetCurrentDisplayMode
或SDL_GetDesktopDisplayMode
。用法示例:
SDL_DisplayMode DM;
SDL_GetCurrentDisplayMode(0, &DM);
auto Width = DM.w;
auto Height = DM.h;
在高DPI显示器上,这将返回虚拟分辨率,而不是物理分辨率。
来自SDL2 wiki:
SDL运行全屏并更改分辨率时,[SDL_GetDesktopDisplayMode()]和SDL_GetCurrentDisplayMode(。在这种情况下,[SDL_GetDesktopDisplayMode()]将返回以前的本地显示模式,而不是当前的显示模式。
在全屏上:使用SDL_GetRendererOutputSize
可以非常容易地完成
你只需要像这样通过你的SDL_Renderer*
:
int w, h;
SDL_GetRendererOutputSize(renderer, &w, &h);
void SDL_GetRendererOutputSize(SDL_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
失败了,你会讨厌你的生活!
相关文章:
- 获取网格中心的屏幕位置
- 获取可能的屏幕分辨率列表
- 如何使用 c++ mfc 在屏幕上获取鼠标事件
- 如何从保存的几何体中获取屏幕编号?
- 从交换链获取多个屏幕缓冲区
- MFC和Windows API之间的区别在获取屏幕分辨率方面
- 在Qt中获取屏幕对角线大小
- 使用二维屏幕坐标gluUnproject获取三维模型坐标
- GLFW 获取屏幕高度/宽度
- 在窗口中的屏幕上获取坐标像素数据的简单方法
- SDL_MapRGB,如何使用指针到指针获取屏幕>格式
- 使用C++获取Linux机器的屏幕截图
- QML地图:点击屏幕时获取坐标
- 如何使用DX9获取其他全屏游戏的屏幕截图
- 如何在 x11 中获取屏幕像素的颜色
- 如何在SDL中获取屏幕大小
- 如何在C++中获取屏幕分辨率
- 获取所有支持的屏幕分辨率
- 获取屏幕宽度和屏幕高度
- GetDC(NULL)获取主监视器或虚拟屏幕