14

Когда Windows Aero включен, экран не разрывается, в отличие от использования темы Basic без Aero.

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

Почему и как это происходит или кажется?

4 ответа4

8

Фактически, причина, по которой Aero может предотвратить разрыв, не вызывая VSYNC в приложении, заключается в том, что он является оконным менеджером композитинга. Он рисует рабочий стол и все окна асинхронно относительно любого работающего приложения.

То есть, когда вы включаете композитинг в Windows Vista / 7 (он всегда включен в Windows 8), он будет рисовать все окна, используя копию последнего изображения, которое было поменяно местами. Композитор (Microsoft называет его DWM, Desktop Window Manager) комбинирует все с включенным VSYNC, и поскольку он рисует, используя копию последнего полностью замененного изображения переднего буфера для каждого окна, он никогда не отображает частично нарисованные кадры. Однако он имеет неприятный побочный эффект - он не позволяет действительно старому программному обеспечению, которое было разработано так, чтобы работать исключительно в переднем буфере, работать правильно, но современное программное обеспечение этого не делает.

В двух словах, DWM добавляет дополнительный уровень защиты от разрывов. Тот, который позволит любому приложению, работающему в системе, рисовать со скоростью, независимо от частоты обновления дисплея, и при этом предотвращать разрыв. В такой системе, в оконном режиме, единственное, для чего хорошо использовать VSYNC в OpenGL или Direct3D, - это фактически снизить нагрузку на CPU/GPU.

Вот почему был создан адаптивный VSYNC, идея которого заключается не в том, чтобы наказывать приложения, которые не могут поддерживать частоту обновления дисплея, принудительно устанавливая их в более низкий коэффициент частоты обновления (например, 60 Гц -> 30, 20, 15, 10, 12). , 6, 5, 4, 3, 2, 1), но для ограничения приложений, которые рисуют быстрее, чем монитор может отображать изображения из-за чрезмерного использования ресурсов процессора / графического процессора.

5

При включенном Aero диспетчер окон рабочего стола использует двойную буферизацию:

Функция Windows Aero широко использует двойную буферизацию для рисования на экране.

Источник

В Википедии сказано, как это используется с V-sync для предотвращения разрыва экрана:

В течение интервала вертикального гашения драйвер приказывает видеокарте либо быстро копировать область вне экрана в активную область отображения (двойная буферизация), либо обрабатывать обе области памяти как отображаемые, и просто переключаться между ними (страница). листать).

3

Двойная буферизация + V-синхронизация не приводит к разрыву. Aero использует эту конфигурацию.

2

DWM (технология, включающая эффект Aero) отображает все на экране в виде поверхности D3D (что позволяет видео продолжать воспроизводиться на Flip). Эта техника рендеринга автоматически предотвращает разрыв, хотя игровой метод должен быть лучше, чем общий метод DWM (в конце концов, это их собственный движок). Так что, скорее всего, игровой метод либо не очень хорош, либо не оптимизирован для вашей конфигурации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .