c++ - SDL_GetCurrentDisplayMode 未返回正确的窗口大小
问题描述
我的问题是如何获取当前的窗口大小?
它需要能够获得全屏或窗口的窗口大小。
我正在使用 SDL2、Glad、OpenGL #ver 130。在窗口 10 上进行缩放。
我将窗口初始化为 1280x720。
SDL_CreateWindow(window, title.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
1280, 720, SDL_WINDOW_ALLOW_HIGHDPI | SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL |
SDL_WINDOW_RESIZABLE);
它是一个 OpenGL 上下文启用窗口。
SDL_GL_CreateContext
gladLoadGL
我想要的只是获取当前的窗口大小。我预计它是 1280x720。
SDL_DisplayMode dm;
if( SDL_GetCurrentDisplayMode( 0, &dm ) != 0 ) {
//save log
}
printf("%dx%d\n", dm.h, dm.w);
终端输出。
960x1707
然而我得到一个奇数,1707x960。我不认为这是正确的。
解决方案
SDL_GetCurrentDisplayMode()
返回给定显示器/监视器的当前分辨率,而不是窗口的大小。
您希望SDL_GetWindowSize()
将窗口大小和SDL_GL_GetDrawableSize()
非 HiDPI 缩放的尺寸传递到glViewport()
.
推荐阅读
- vue.js - 是否可以使用 Nuxt.js + Vuetify + 外部 Javascript 库?
- php - Laravel 7:尝试获取非对象的属性“product_name”
- java - 如何使用转换后的值执行查询
- .htaccess - htaccess 主域子文件夹的别名
- botframework - Azure bot 服务 Web 应用程序 bot 未找到资源
- c# - 为什么我的播放器在与此平台碰撞时速度会大幅下降
- twilio - 是否可以从电脑键盘向 IVR 发送 DTMF 音?
- wpf - 无法使 userControl 中的 TextBox 自动对焦
- arrays - if -else if- else 语句未按预期工作
- rust - 为什么 rust 调试 trait 的实现使用 Formatter<'_> 类型省略