首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SDL中获取屏幕大小

如何在SDL中获取屏幕大小
EN

Stack Overflow用户
提问于 2015-10-28 22:18:34
回答 2查看 21.9K关注 0票数 13

我正在试着用SDL和C++做一个程序。如何在SDL中获取屏幕的宽度和高度?我正在尝试获取屏幕的宽度,而不是窗口的宽度。。。。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-28 22:25:54

在SDL2中,根据需要使用SDL_GetCurrentDisplayModeSDL_GetDesktopDisplayMode。使用示例:

代码语言:javascript
复制
SDL_DisplayMode DM;
SDL_GetCurrentDisplayMode(0, &DM);
auto Width = DM.w;
auto Height = DM.h;

在高DPI显示上,这将返回虚拟分辨率,而不是物理分辨率。

从SDL2维基:

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

票数 27
EN

Stack Overflow用户

发布于 2015-10-29 18:46:52

On Fullscreen:使用SDL_GetRendererOutputSize可以非常容易地完成

你只需要像这样传入一个你的SDL_Renderer*

代码语言:javascript
复制
int w, h;

SDL_GetRendererOutputSize(renderer, &w, &h);

空渲染器(SDL_Renderer*渲染器,int* w,int* h)

渲染器a渲染上下文

w用渲染器的宽度填充的指针

h用渲染器的高度填充的指针

非全屏上的

使用SDL_GetDesktopDisplayMode()

代码语言:javascript
复制
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失败的时候你会讨厌你的生活的!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33393528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档