【问题标题】:SDL_GetCurrentDisplayMode not returning correct window sizeSDL_GetCurrentDisplayMode 未返回正确的窗口大小
【发布时间】:2021-03-15 03:19:57
【问题描述】:

我的问题是如何获取当前窗口大小?

它需要能够获取窗口大小,无论是全屏还是窗口。

我正在使用 SDL2、Glad、OpenGL #ver 130。在 Window 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。我不认为这是正确的。

【问题讨论】:

    标签: c++ windows opengl sdl hidpi


    【解决方案1】:

    SDL_GetCurrentDisplayMode() 返回给定显示器/监视器的当前分辨率,而不是窗口的大小。

    您希望 SDL_GetWindowSize() 用于窗口大小,SDL_GL_GetDrawableSize() 用于非 HiDPI 缩放尺寸传递到 glViewport()

    【讨论】:

      猜你喜欢
      • 2017-07-01
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2019-01-20
      • 1970-01-01
      • 2012-04-21
      相关资源
      最近更新 更多