Я пытаюсь открыть полноэкранное окно с помощью SDL2. Я внимательно изучил документацию по отображению и управлению окнами ( https://wiki.libsdl.org/CategoryVideo )... однако я не понимаю, как лучше всего получить разрешение экрана, над которым я на самом деле работаю.
У меня есть следующий пример кода:
SDL_DisplayMode mMode;
SDL_Rect mRect;
int ret0 = SDL_GetDisplayBounds(0, &mRect);
std::cout << "bounds w and h are: " << mRect.w << " x " << mRect.h << std::endl;
int ret2 = SDL_GetCurrentDisplayMode(0, &mMode);
std::cout << "current display res w and h are: " << mMode.w << " x " << mMode.h << std::endl;
int ret3 = SDL_GetDisplayMode(0, 0, &mMode);
std::cout << "display mode res w and h are: " << mMode.w << " x " << mMode.h << std::endl;
Я работаю на одном дисплее с разрешением 1920x1080. Тем не менее, напечатанные результаты:
Кажется, что SDL_GetDisplayMode() — единственная функция, отображающая правильное разрешение, поэтому я склонен использовать ее. Однако я читал, что когда дело доходит до SDL_GetDisplayMode(), режимы отображения сортируются в соответствии с определенным приоритетом, так что вызов с 0 возвращает самое большое поддерживаемое разрешение для дисплея, которое не обязательно является фактическим разрешением (см. также: определение разрешения рабочего стола SDL в Linux).
Мой вопрос: как лучше всего получить правильное разрешение?
SDL_GetDisplayBounds(SDL_GetWindowDisplayIndex(window), ...);
. Это дает правильное разрешение в вашей системе? - person HolyBlackCat   schedule 07.11.2016SDL_GetDesktopDisplayMode()
. Если это не будет работать должным образом, я бы еще раз проверил, действительно ли разрешение вашего экрана установлено на 1920x1980. - person HolyBlackCat   schedule 07.11.2016