2016-09-27 7 views
1
//Get screen resolution 
    SDL_DisplayMode current; 
     cout << "num_displays : " << SDL_GetNumVideoDisplays() << endl; 
     for (int i = 0; i < SDL_GetNumVideoDisplays(); ++i){ 
      SDL_GetDesktopDisplayMode(i, &current); 
      cout << "current.w [ " << current.w << " ] - current.h [ " << current.h << " ]\n"; 
     } 

Следующий код распечатывает разрешение экрана каждого прикрепленного дисплея. Проблема в том, что когда я запускаю его в режиме 1920 x 1080, это показывает мне неправильное разрешение. Однако, если я опустил свое разрешение до 1600 x 900 или ниже на моем основном дисплее, значение current.w & current.h идеально.SDL_GetDesktopDisplayMode() не может получить 1080

Является ли это ограничением SDL или мои драйверы дисплея неисправны?

IDE: CodeBlocks (32 бит) - Компилятор: MinGW

EDIT: Неправильный на самом деле очень конкретное значение, а не мусор. Вместо 1920 - 1080 неправильный выход ВСЕГДА 1536 - 864

+2

Что значит «неправильно» (наполовину то, что должно быть, отрицательно, NaN, ...)? – Brendan

+2

Коэффициент 1,25 ли вы (или ваша ОС) установить ваш рабочий стол (highdpi) масштабирования до 1,25 на этом разрешении? Если это так, вы можете настроить ваше приложение на highdpi, но это делается на вашей ОС (plist на osx или manifest на окнах). – PeterT

ответ

3

Выключен @PeterT был прав. Я использую окна 10, а масштабирование - 125%. Уменьшение масштабирования до 100% разрешило проблему. Когда я опустил свое разрешение, оказалось, что Windows автоматически изменила масштаб на 100%.

+2

, если вы просто беспокоитесь о окнах, я думаю, что флажок окна ['SDL_WINDOW_ALLOW_HIGHDPI'] (https://wiki.libsdl.org/SDL_WindowFlags) может быть достаточным, чтобы вы могли визуализировать в собственном разрешении. – PeterT