#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()
.