Как проверить, включена ли автоматическая настройка соотношения сторон на мониторе

Игровое приложение написано на C++ и использует DirectX 8.

Я получаю максимальное разрешение монитора для расчета его соотношения сторон. Затем я использую это значение для исправления рендеринга игры (масштабирование и настройка отсечения для получения нормального изображения 4:3 с черными рамками на широкоэкранных мониторах).

Как я могу проверить, использует ли монитор сейчас авторегулировку соотношения сторон? Потому что мое масштабирование плюс масштабирование монитора делает результирующее изображение чрезмерно масштабируемым.

Спасибо

РЕДАКТИРОВАТЬ: я видел правильную обработку различных разрешений монитора с автоматической настройкой соотношения сторон или без нее в казуальной игре «Королевский посланник». Но не знаю, как они это делают.


person kFk    schedule 20.05.2010    source источник


Ответы (1)


Часто это реализовано в самом мониторе, поэтому приложение не может обнаружить этот случай.

Обратите внимание, что вам также необходимо обработать случай, когда разрешение монитора установлено на 1280x1024, что соответствует разрешению 5:4 с использованием неквадратных пикселей (где размеры дисплея по-прежнему физически равны 4:3). Предполагать, что ваши пиксели квадратные, не всегда правильно. (Хотя, вероятно, есть способ запросить эту информацию у ОС или другого оконного менеджера.)

person dash-tom-bang    schedule 20.05.2010
comment
Спасибо. Кто-нибудь знает, как узнать, являются ли пиксели квадратными? - person kFk; 21.05.2010
comment
@kFk - я не помню, но я думал, что для получения этой информации был вызов WinAPI. Однако он может быть запихнут в какую-то структуру свойств отображения. - person dash-tom-bang; 21.05.2010