SDL_GetCurrentDisplayMode не возвращает правильный размер окна

#c #windows #opengl #sdl #hidpi

#c #Windows #opengl #sdl #hidpi

Вопрос:

Мой вопрос заключается в том, как получить текущий размер окна?

Он должен иметь возможность получать размер окна, как полноэкранного, так и оконного.

Я использую SDL2, Glad, OpenGL # версия 130. В окне 10 с масштабированием.

Я инициализировал окно размером 1280х720.

 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
 

Все, что я хочу, это получить текущий размер окна. Я ожидал, что он будет 1280х720.

         SDL_DisplayMode dm;
        if( SDL_GetCurrentDisplayMode( 0, amp;dm ) != 0 ) {
            //save log
        }
        printf("%dx%dn", dm.h, dm.w);
 

Терминальный выход.

 960x1707
 

И все же я получаю нечетное число, 1707×960. Я не думаю, что это правильно.

Ответ №1:

SDL_GetCurrentDisplayMode() возвращает текущее разрешение данного дисплея / монитора, а не размер окна.

Вы хотите SDL_GetWindowSize() , чтобы размер окна и размеры, SDL_GL_GetDrawableSize() не масштабируемые HiDPI, передавались glViewport() .