Что такое синхронизация кадров. Как включить или отключить вертикальную синхронизацию в играх. Влияние на производительность

Почти во всех современных играх в параметрах графики можно наблюдать графу «вертикальная синхронизация». И всё у большего числа игроков возникают вопросы, так ли полезна эта синхронизация , ее влияние и зачем вообще она существует, как ее использовать на различных платформах. Разберёмся в этой статье.

О вертикальной синхронизации

Прежде чем приступить непосредственно к разъяснению о природе вертикальной синхронизации, следует немного углубиться в историю становления вертикальной синхронизации. Постараюсь как можно понятнее. Первые компьютерные мониторы представляли собой фиксированное изображение подающиеся одним сигналом кадровой развёрстки.

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

Разрешение же VGA требовало к себе более тонкой настройки развёрстки и подавалось двумя сигналам по горизонтали, и по вертикали. В сегодняшних дисплеях за установление развёрстки отвечает встроенный контроллер.

Но если контролер соответственно драйверу устанавливает необходимое число кадров, под установленное разрешение к чему вообще нужна вертикальная синхронизация? Всё не так просто. Довольно часты ситуации, когда кадровая частота генерации видеокарты очень высока, но мониторы ввиду своей технической ограниченности не способны правильно отобразить это число кадров , когда частота обновления монитора значительно ниже частоты генерации видеокарты. Это приводит к резким движения картинки, артефактам и полосам.

Не успевая показывать кадры из файла памяти при включенной «тройной буферизации», они быстро сменяют себя, накладывая следующие кадры. И здесь технология тройной буферизации почти неэффективна.

Технология же вертикальной синхронизации и призвана устранить эти дефекты .

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

Подключение вертикальной синхронизации

Абсолютное большинство игр имеет в себе эту функции в настройках графики непосредственно. Но случается когда такой графы нет, или же определённые дефекты наблюдаются при работе с графикой приложений, не включивших в себя настройки таких параметров.

В настройках каждой видеокарты можно включить технологию вертикальной синхронизации применительно ко всем приложениям или выборочно.

Как включить для NVidia?

Как и большинство манипуляций с картами NVidia выполняется через консоль управления NVidia. Там в графе управления параметрами 3D будет параметр синхроимпульса.

Его и следует перевести в положение, включено. Но в зависимости от видеокарты порядок будет иным.

Так в старых видеокартах параметр вертикальной синхронизации находится в главе глобальных параметров в той же графе управления параметрами 3D.

Видеокарты от ATI

Для настройки воспользуйтесь центром управления для вашей видеокарты. А именно центр управления Catalyst Control Center работает под управлением.NET Framework 1.1. Если у вас его нет, то и центр управления не запустится. Но не стоит переживать. В таком случаи есть альтернатива центру просто работа с классической панелью управления.

Для доступа к настройкам перейдите в пункт 3D, расположенный в меню слева. Там будет раздел Wait for Vertical Refresh. Изначально технология вертикальной синхронизации по умолчанию используется внутри приложения.

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

Подведем итоги

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

Сегодня вертикальная синхронизация есть в большинстве игр. Она работает почти так же как тройная буферизация, но затрачивает намного меньше ресурсов , поэтому и тройной буферизации в настройках игр можно увидеть реже.

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

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

Эта таинственная графа в параметрах многих игр оказалась не так проста, как казалась. И сейчас выбор применять ее или нет, остается лишь за вами и вашими целями в играх.

Переводим... Перевести Китайский (упрощенное письмо) Китайский (традиционное письмо) Английский Французский Немецкий Итальянский Португальский Русский Испанский Турецкий

К сожалению, мы не можем перевести эту информацию прямо сейчас - пожалуйста, повторите попытку позже.

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

Введение

Наши представления о «цифровом доме» постепенно становятся реальностью. В последние годы в широкую продажу поступает все больше устройств для «цифрового дома». Ассортимент предлагаемой электроники весьма велик – от мультимедийных приставок, поддерживающих вещание музыки и видео, до полномасштабных развлекательных систем в корпусе обычного ПК.

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

К сожалению, такие медиа-центры далеко не всегда поддерживают воспроизведение видео высокого качества. Недостаточное качество видео обычно вызвано такими факторами, как некорректная буферизация и рендеринг потокового содержимого, отсутствие алгоритмов деинтерлейсинга при обработке чересстрочного видео, неправильная синхронизация видео- аудио потоков. Большинство этих проблем хорошо изучены и имеют решения, что в достаточной мере учитывается производителями. Тем не менее, существует еще одна, не столь известная и менее очевидная проблема, которая может приводить к незначительным, но все же заметным искажениям при просмотре видео. В нашей статье приводится детальное описание данной проблемы и рассматривается один из способов ее решения.

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

Существует целый ряд методов, позволяющих улучшить качество воспроизведения видео на компьютере, и многие производители программного обеспечения для работы с видео их успешно применяют. В то же время, иногда без надлежащего внимания остается тот факт, что программные средства воспроизведения видео должны учитывать и обеспечивать синхронизацию видео с частотой обновления дисплея . Дело в том, что в телевизорах изначально предусмотрена синхронизация с видеосигналом, поступающим из студии телевещания. В отличие от телевизоров, обновление экрана компьютерных мониторов происходит с фиксированной частотой, которая задается графическим адаптером и никак не связана с видеосигналом. Это существенное различие может доставить немало трудностей, если требуется обеспечить правильную синхронизацию видео с компьютерным дисплеем. Ниже мы постараемся привести подробное описание данной проблемы и предложить ее решение. Однако, перед этим мы хотели бы познакомить читателя с некоторыми основными понятиями, которые будут рассматриваться в статье.

Цикл обновления дисплея

Частота обновления экрана ПК (screen refresh rate) синхронизируется с частотой графического адаптера (видеокарты). Рассмотрим самый общий пример ­– когда видеокарта и монитор поддерживают частоту 60Гц. Эта комбинация возможна благодаря тому, что монитор синхронизируется с сигналом 60Гц, поступающим с видеокарты. На самом деле, монитор поддерживает синхронизацию даже в случаях незначительного отклонения частоты выходного сигнала графического адаптера (например, 60,06 Гц вместо стандартных 60 Гц).

В течение цикла обновления изображение на экране перерисовывается из буфера дисплея (адресуемой памяти графического адаптера). Происходит последовательное обновление каждой горизонтальной строки на дисплее в соответствии с новыми данными, содержащимися в буфере видеопамяти. Обновляемая в данный момент времени строка называется строкой развертки. В случае графического адаптера с частотой 60 Гц, процесс обновления экрана происходит 60 раз в секунду, таким образом, изображение на мониторе ПК также обновляется 60 раз в секунду.

Рисунок 1 – Обновление дисплея

Артефакты разрыва изображения

Следует учитывать потенциальную проблему неравномерного обновления буфера графического адаптера. Если содержимое буфера видеопамяти изменилось в момент, когда изображение на мониторе еще полностью не отрисовалось (цикл обновления не завершен), то на экране будет показана только часть нового изображения, следующая после строки развертки (см. Рис. 2 ). Этот артефакт изображения, при котором на верхней части экрана показывается старое изображение, а на нижней части – новое изображение, получил название «разрыва» (tearing). В сущности, этот термин весьма нагляден, так как получающееся в итоге изображение выглядит как бы «разорванным» пополам.

Рисунок 2 – Артефакты «разрыва» изображения

Команда Flip

Один из способов предупреждения «разрывов» - сделать так, чтобы обновление содержимого видеопамяти происходило после того , как завершится цикл обновления дисплея и до того , как начнется следующий цикл. Иными словами, обновление должно происходить в течение обратного хода развертки. Однако такой способ требует соответствующих изменений программного обеспечения, которое должно с достаточной точностью рассчитывать порядок смены изображения.

По этой причине был предложен алгоритм синхронизации переключения буфера (Flip). Команда Flip весьма проста по своей сути – она позволяет программе обновлять изображение в любой момент цикла обновления экрана, однако его результат фактически не передается в видеопамять до тех пор, пока не завершится текущий цикл. Таким образом, обновление изображения на мониторе происходит в интервал, следующий за выполнением команды Flip. При использовании метода синхронизации буфера «разрывы» изображения исключены, так как команда Flip гарантирует, что к каждому циклу обновления будет готово полное новое изображение (см. Рис. 3 ). Тем не менее, в следующем разделе мы продемонстрируем, что использование одной лишь команды Flip не гарантирует решения всех проблем.

Рисунок 3 – Последовательность команды Flip

Потенциальные проблемы

Использование алгоритма синхронизации дает большие преимущества и помогает устранить артефакты «разрыва» изображения, но остается одна существенная проблема.

При использовании команды Flip условия программного рендеринга видео изменяются. Для исполнения Flip программному обеспечению приходится регулировать интервал обновления кадрового буфера (frame rate) в соответствии с определенной частой кадров. Единственной тактовой частотой, на которой кадры могут быть синхронизированы, является частота обновления дисплея (или кратная). Другими словами, новый кадр может быть изображен только в начале цикла обновления – фактически, интервалы вывода кадров привязаны к частоте обновления дисплея.

Рисунок 4 – Несовпадение частоты кадров и частоты дисплея

Этот факт подразумевает, что если частота обновления дисплея не совпадает с частой кадров воспроизводимого содержимого или не является кратной величиной, полноценное воспроизведение содержимого на дисплее невозможно. На Рис. 4 показан частный случай данной проблемы. В рассматриваемом сценарии частота кадров содержимого меньше, чем частота обновления дисплея. По причине фазового сдвига между этими двумя частотами интервалы выполнения команды Flip для двух кадров в конечном итоге растянутся на полный цикл обновления (обратите внимание на синхронизацию кадров 3 и 4). В результате кадр 3 будет отображаться почти в два раза дольше, чем требуется. Таким образом, следует стремиться к совпадению частоты кадров и частоты обновления дисплея, хотя это и не всегда возможно.

Рассматриваемая ситуация только усугубляется в случае, если разница между частотой кадров и частотой обновления дисплея невелика. Когда время смены кадров близко к интервалам циклов обновления даже небольшие неточности в расчетах программного таймера могут привести к тому, что несколько последовательных команд Flip будут сбиваться относительно начала обновления. Это означает, что некоторые команды Flip будут выполняться слишком рано, а некоторые слишком поздно, что приведет к появлению «дублированных» и «выпавших» кадров. Данный случай проиллюстрирован на Рис. 5 – таймер срабатывает некорректно (через неравные промежутки), в результате кадры 2 и 4 не показываются, а кадры 3 и 5 показываются дважды.

Рисунок 5 – Результат использования Flip при сбоях таймера

Это явление может иметь место даже в том случае, когда частота кадров содержимого и частота обновления дисплея одинаковы. Очевидно, что использование лишь таймера и команды Flip недостаточно для обеспечения качественного воспроизведения видео. Как объясняется в следующем разделе, для правильного выполнения команд Flip программное обеспечение должно поддерживать ”умную” синхронизацию с циклами обновления дисплея.

Привязка команд Flip по времени

Как уже было сказано выше, применение команды Flip позволяет учитывать циклы обновления экрана при рендеринге видео кадров. Каждый вновь передаваемый кадр отображается только в течение одного полного цикла обновления дисплея. Таким образом, при использовании команды Flip программное обеспечение должно точно рассчитывать не только тот момент, когда следует отображать каждый кадр, но и определять конкретный цикл обновления, чтобы оптимальным образом синхронизировать вывод кадров.

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

Некоторые операционные системы предоставляют программные интерфейсы, с помощью которых приложения могут поддерживать синхронизацию с циклом обновления дисплея. В частности, среда Microsoft DirectX 9.0 включает несколько процедур, которые могут быть весьма полезны в нашем случае. Далее мы рассмотрим стандартные процедуры DirectX в качестве примерных методов решения исследуемой проблемы. Читатели могут использовать эти примеры для изучения предлагаемых методов и поиска аналогичных решений в других операционных системах.

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

GetScanLine() - это стандартная процедура, которая может использоваться для получения данных о том, какая строка развертки в настоящий момент обновляется на дисплее. Если известно общее количество строк и текущая строка развертки, то не составляет труда определить состояние цикла обновления дисплея. Например, если общее количество строк дисплея составляет 1024, а процедура GetScanLine() возвращает значение 100, текущий цикл обновления в данный момент определяется отношением 100 к 1024, то есть завершен примерно на 10 процентов. Применение GetScanLine() позволяет приложению отслеживать состояние цикла обновления и на его основе определять, к какому циклу привязывать следующий отображаемый кадр, и настраивать таймер на нужное время переключения буфера. Ниже приводится примерный алгоритм:

Рисунок 6

Время смены кадра выбирается не только на основании расчета новых кадров изображения, но и с учетом частоты обновления экрана. Поскольку кадры отображаться на экране только в момент обновления дисплея, необходимо сделать так, чтобы каждый кадр «попал» в правильный цикл обновления. Таким образом, в идеале подготовка кадров изображения должна точно совпадать с частотой обновления экрана. В этом случае каждый кадр будет отрисовываться на дисплее в нужный момент.

Альтернативное решение для записанного содержимого

Рассматриваемые нами проблемы относятся ко всем сценариям воспроизведения видео, как в случае вещания в прямом эфире, так и при воспроизведении записанного видео. Однако, в последнем случае можно прибегнуть и к альтернативному решению. Если разница между частотой кадров содержимого и частотой обновления дисплея невелика, можно скорректировать частоту кадров видео (и таким же образом скорректировать аудиопоток) таким образом, чтобы он соответствовал частоте обновления экрана, без ухудшения качества содержимого. В качестве примера возьмем воспроизведение телевизионного сигнала стандартного разрешения с частотой 59,94 кадров в секунду (с деинтерлейсингом по алгоритму Bob) на мониторе с частотой 60 Гц. За счет ускорения воспроизведения видео и аудио до 60 кадров в секунду можно добиться того, что время смены кадров будет соответствовать интервалам обновления экрана и при этом не будут возникать артефакты изображения.

Резюме

Данная публикация посвящена методам синхронизации изображения, в частности, предотвращению артефактов «разрыва» изображения с помощью команды Flip. В статье также рассматриваются случаи, когда команда Flip вызывает проблемы, вызванные жесткой синхронизацией с циклами обновления дисплея. Правильная синхронизация кадров и использование команд Flip может привести к тому, что время отображения кадров и интервал между ними будут отличаться от значений, ожидаемых программным приложением. В статье делается вывод, что корректный способ использования команд Flip должен сочетать синхронизацию Flip с частотой обновления экрана и оптимизацию цикла расчета изображения с учетом его последующего вывода. Таким образом, в программном обеспечении может быть предусмотрено регулирование интервалов Flip. Лучшее качество видео достигается при условии совпадения частоты кадров содержимого с частотой обновления дисплея. Однако, на практике это не всегда достижимо. Описанные в данной статье алгоритмы помогут свести артефакты изображения к минимуму.

Что же такое вертикальная синхронизация в играх? Эта функция отвечает за правильное отображение игр на стандартных LCD мониторах с частотой 60 Гц. Когда она включена, частота кадров ограничена до 60 Гц, а на экране не отображаются никакие прерывания. Ее отключение приведет к увеличению частоты кадров, но в то же время возникнет эффект разрыва экрана (screen tearing).

Вертикальная синхронизация является довольно спорной темой в играх. С одной стороны для визуально комфортного игрового процесса, кажется, очень необходимой, при условии, что у вас стандартный LCD монитор.

Благодаря ей во время игры не возникают никакие погрешности на экране, картинка стабильная и не имеет разрывов. Недостатком является то, что частота кадров ограничена на пределе 60 Гц, поэтому более требовательные игроки могут ощутить так называемый input lag, то есть легкую задержку при перемещении в игре с помощью мыши (можно приравнять к искусственному сглаживанию движения мыши).

Отключение вертикальной синхронизации также имеет свои плюсы и минусы. В первую очередь предоставляется неограниченная частота кадров FPS и тем самым полностью убираем упомянутый input lag. Это удобно в играх типа Counter-Strike, где важна реакция и точность. Передвижение и прицеливание очень четкие, динамические, каждое движение мыши происходит с высокой точностью. В некоторых случаях сможем получить большую частоту FPS, так как V-Sync в зависимости от видеокарты может немного уменьшить производительность оборудования (разница порядка 3-5 FPS). К сожалению, недостатком является то, что без вертикальной синхронизации получаем эффект разрыва экрана. При поворотах или смене движения в игре мы замечаем, что изображение разрывается на две или три горизонтальные части.

Включить или отключить V-Sync?

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

В свою очередь в сюжетных играх можно спокойно включить V-Sync. Здесь высокая точность не так важна, первую скрипку играет обстановка, визуальный комфорт, так что следует сделать ставку на хорошее качество.

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

Синхронизация по вертикали на видеокартах NVIDIA

В видеокартах GeForce функция находится на Панели управления Nvidia. Нажмите правой кнопкой мыши на рабочем столе Windows 10, а затем выберите «Панель управления Nvidia».

На боковой панели выберите вкладку «Управления параметрами 3D» в разделе «Параметры 3D». Справа отобразятся доступные настройки.

Настройки разделены на две вкладки – глобальные и программные. На первой вкладке можно задать параметры для всех игр и, например, включить ли отключить вертикальную синхронизацию в каждой. Тогда как на второй вкладке можно задать те же параметры, но индивидуально для каждой игры отдельно.

Выбираем вкладку глобальную или программную, а затем ищем в списке параметр «Вертикальная синхронизация». Рядом расположено выпадающее поле – выбираем принудительное выключение или включение вертикальной синхронизации.

V-Sync на графике AMD

В случае с видеокартами AMD выглядит совершенно так же, как и в Nvidia. Кликните правой кнопкой мыши на рабочем столе, а затем перейдите в Панель Panel Catalyst Control Center.

Затем раскрываем слева вкладку «Игры» и выбираем «Настройки 3D-приложений». Справа отобразится список доступных вариантов, которые можно принудительно включить с позиции настроек видеокарты AMD Radeon. Когда находимся на вкладке «Системные параметры», то выбираем для всех.

Если нужно установить параметры индивидуально для каждой игры в отдельности, то следует нажать на кнопку «Добавить» и указать EXE файл. Она будет добавлена в список в виде новой закладки и при переходе на нее можно задать параметры только для этой игры.

Когда выбрали вкладку с добавленным приложением или системными параметрами (общими), то найдите в списке опцию «Жди на вертикальное обновление». Появится поле для выбора, где сможем принудительно включить или отключить эту опцию.

V-Sync на интегрированной видеокарте Intel HD Graphics

Если используем интегрированный чип Intel HD Graphics, также доступна панель управления. Она должна быть доступна при нажатии правой кнопкой мыши на рабочем столе или через комбинацию клавиш Ctrl + Alt + F12.

На панели Intel переходим на вкладку Режим настройки – Панель управления — Трехмерная графика, а затем в пользовательские настройки.

Здесь находим поле с синхронизацией по вертикали Vertical Sync. Можно включить ее принудительно, установив значение на «Включено» или установить на «Настройки приложения». К сожалению, в опциях карты Intel HD нет функции принудительного отключения – только можно включить V-Sync. Так как отключить вертикальную синхронизацию в видеокарте не представляется возможным, то сделать это можно только в настройках самой игры.

Наверняка многие любители компьютерных игр сталкивались с рекомендацией отключать в играх так называемую «вертикальную синхронизацию» или VSync в настройках видеокарты.

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

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

Мониторам, поддерживающим разрешение VGA и выше, потребовалась уже точная настройка частот развертки.
Для этого использовались уже два сигнала, отвечающие за синхронизацию изображения как по горизонтали, так и по вертикали.
В современных мониторах за подстройку развертки в соответствии с установленным разрешением отвечает специальная микросхема-контроллер.

Для чего же в настройках видеокарт сохранен пункт «вертикальная синхронизация», если монитор способен автоматически настраиваться в соответствии с установленным в драйвере режимом?
Дело в том, что, несмотря на то, что видеокарты способны генерировать очень большое число кадров в секунду, мониторы не могут его качественно отображать, в результате чего возникают различные артефакты: полосность и «рваное» изображение.

Чтобы этого избежать, в видеокартах предусматривается режим предварительного опроса монитора о его вертикальной развертке, с которой и синхронизируется число кадров в секунду - всем знакомые fps.
Иными словами, при частоте вертикальной развертки 85 Гц число кадров в секунду в любых играх не будет превышать восьмидесяти пяти.

Частота вертикальной развертки монитора означает, сколько раз обновляется экран с изображением в секунду.
В случае с дисплеем на основе электронно-лучевой трубки, сколько бы кадров в секунду не позволял «выжать» из игры графический ускоритель, частота развертки физически не может быть выше установленной.

В жидкокристаллических мониторах не существует физического обновления всего экрана: здесь отдельные пиксели могут светиться или не светиться.
Однако сама технология передачи данных через видеоинтерфейс предусматривает, что на монитор от видеокарты передаются кадры с определенной скоростью.
Поэтому, с долей условности, понятие «развертки» применимо и к ЖК-дисплеем.

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

К примеру, монитор работает с частотой развертки 75 Гц, а видеокарта в какой-либо игре генерирует сто кадров в секунду.
Иными словами, графический ускоритель работает примерно на треть быстрее, чем система обновления монитора.
За время обновления одного экрана карта вырабатывает 1 кадр и треть следующего - в результате на дисплее прорисовывается две трети текущего кадра, а его треть заменяется третью кадра следующего.

За время очередного обновления карта успевает сгенерировать две трети кадра и две трети следующего, и так далее.
На монитор же в каждые два из трех тактов развертки мы наблюдаем треть изображения от другого кадра - картинка теряет плавность и «дергается».
Особенно заметен этот дефект в динамичных сценах или, например, когда ваш персонаж в игре осматривается.

Однако было бы в корне неправильным считать, что если видеокарте запретить генерировать более 75 кадров в секунду, то с выводом изображения на дисплей с частотой вертикальной развертки 75 Гц все было бы в порядке.
Дело в том, что в случае с обычной, так называемой «двойной буферизацией», кадры на монитор поступают из первичного кадрового буфера (front buffer), а сам рендеринг осуществляется во вторичном буфере (back buffer).

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

Вертикальная синхронизация как раз и решает эти проблемы: монитор опрашивается на предмет частоты развертки и копирование кадров из вторичного буфера в первичный запрещается до того момента, пока изображение не обновится.
Эта технология прекрасно работает, когда скорость генерации кадров в секунду превышает частоту вертикальной развертки.
Но как же быть, если скорость рендеринга кадров падает ниже частоты развертки?
К примеру, в некоторых сценах у нас число fps снижается со 100 до 50.

В этом случае происходит следующее.
Изображение на мониторе обновилось, первый кадр копируется в первичный буфер, а две трети второго «рендерятся» во вторичном буфере, после чего следует очередное обновление изображения на дисплее.
В это время видеокарта заканчивает обработку второго кадра, который она еще не может отправить в первичный буфер, и происходит очередное обновление изображение тем же самым кадром, который все еще хранится в первичном буфере.

Потом все это повторяется, и в результате мы имеем ситуацию, когда скорость вывода кадров в секунду на экран в два раза ниже, чем частота развертки и на треть ниже потенциальной скорости рендеринга: видеокарта сначала «не успевает» за монитором, а потом ей, напротив, приходится ожидать, пока дисплей повторно заберет кадр, хранящийся в первичном буфере, и пока во вторичном буфере освободится место для расчета нового кадра.

Получается, что в случае с вертикальной синхронизацией и двойной буферизацией качественное изображение мы может получить только в том случае, когда число кадров в секунду равно одному из дискретной последовательности значений, рассчитываемых как соотношение частоты развертки к некоторому положительному целому числу.
К примеру, при частоте обновления 60 Гц число кадров в секунду должно быть равным 60 или 30 или 15 или 12 или 10 и т.д.

Если потенциальные возможности карты позволяют генерировать менее 60 и более 30 кадров в секунду, то реальная скорость рендеринга будет падать до 30 fps.



 
Статьи по теме:
Где найти мастера рун Witcher 3 руны
Побочные задания в дополнении «Каменные сердца» не так многочисленны, точнее, их совсем мало. Оно и понятно, водоворот событий при прохождении основного сюжета затягивает с головой, и отвлекаться от увлекательнейшего повествования совершенно не хочется. О
Прохождение castlevania lords of shadow 2
Прохождение Castlevania Lords of Shadow 2 Сначала обучение. Надо будет встать с трона и пройти в зал, где нажать все кнопки, находящиеся на дисплее слева. После появления солдат, продолжаем выполнять указания, просто бить их нет смысла. Есть некоторая пр
Всё, что вам нужно знать об SD-картах памяти, чтобы не облажаться при покупке Подключаем sd
(4 оценок) Если на вашем устройстве недостаточный объем внутренней памяти, можно использовать SD-карту как внутреннее хранилище для вашего телефона Android. Данная функция, называемая Adoptable Storage, позволяет ОС Андроид форматировать внешний носител
Как повернуть колёса в GTA Online и многое другое в FAQ по GTA Online
Почему не подключается gta online?Всё просто, сервер времено выключен/неактивен или не работает. Зайди на другой.Как отключить онлайн игры в браузере. Как отключить запуск приложения Online Update Clinet в Connect manager? ... На сккоко я знаю когда ты ум