Тройная буферизация что это
Перейти к содержимому

Тройная буферизация что это

  • автор:

Тройная буферизация

Увеличение числа буферов, которые могут содержать основную поверхность, повышает производительность отображения. Предпочтительнее иметь по крайней мере три перевернутые поверхности (в некоторых играх используется пять и более). Если есть только две поверхности и происходит переворачивание страницы, дисплей задерживается до завершения вертикального отката монитора. Задержка необходима, чтобы убедиться, что задний буфер не записан до завершения отображения. При использовании тройной буферизации третья поверхность всегда доступна для записи, так как она является задним буфером и доступна для немедленного рисования (как показано на следующем рисунке). В игре, которая не использует память спрайта, трехмерная отрисовка с использованием тройной буферизации выполняется на 20–30 процентов быстрее, чем двойная буферизация.

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

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

Ниже приведено краткое описание перелистывания и разрезания в системе с тройным буфером с использованием меток из предыдущего рисунка. Пример начинается с отображения surface pixel memory 11. Это основная поверхность, на которую указывает передний буфер (fpVidMem в примере кода, поставляемом вместе с комплектом средств разработки драйверов Windows [DDK]). В какой-то момент становится желательно переместиться на поверхность с памятью 22 пикселей. Так как fpVidMem указывает на поверхность, начиная с 11 (а не 22), а состояние пролистывания — false (на запрошенной поверхности не выполняется пролистывание), blt может продолжить работу. Драйвер блокирует поверхность, записывает в нее, а затем разблокирует ее. Для отображения этой поверхности должен произойти переворачивание.

Объект переднего буфера DirectDraw теперь может изменить fpVidMem (указатель памяти дисплея), чтобы сделать поверхность с 22 основной поверхностью. Так как ожидание пролистывания не выполняется, указатели отображения обмениваются (см. нижнюю половину предыдущего рисунка), а состояние пролистывания имеет значение TRUE. Теперь передний буфер указывает на поверхностную память пикселей 22, задний — на память 33 пикселей поверхности, а третий объект буфера — на память пикселей 11 (старая основная поверхность). В отличие от двойной буферизации, DirectDraw в настоящее время может выполнять запись в задний буфер. Иными словами, DirectDraw может выполнять запись в память 33 пикселей, так как ожидание пролистывания не выполняется. Этот циклический процесс перелистывания продолжается бесконечно для обеспечения плавной анимации и ускорения воспроизведения игр и видео для приложений, использующих DirectDraw.

Обратная связь

Были ли сведения на этой странице полезными?

Что такое Vsync и следует ли его использовать?

Vsync — это опция, которую вы увидите в большинстве компьютерных видеоигр, а иногда и в других приложениях. Но что такое Vsync? Что оно делает? Включить или выключить?

Ответ на этот вопрос сложен, но как только вы поймете цель Vsync, вы поймете, когда включить или оставить.

Что такое Vsync?

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

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

Также есть много контента, записанного со скоростью 30 и 60 кадров в секунду. Например, съемка с экшн-камеры обычно записывается со скоростью 60 кадров в секунду.

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

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

Типичная частота обновления

Наиболее распространенная частота обновления дисплея — 60 Гц. То есть 60 обновлений в секунду. Большинство компьютерных мониторов и телевизоров предлагают по крайней мере это.

Вы также можете купить компьютерные мониторы с различными частотами обновления , в том числе: 75 Гц, 120 Гц, 144 Гц, 240 Гц и 300 Гц. Могут быть и другие необычные числа, но они типичны, а более высокие частоты обновления встречаются реже за пределами специализированных игровых систем.

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

Согласование частоты кадров с частотой обновления

Частота обновления экрана не обязательно должна точно соответствовать частоте кадров контента. Например, если вы воспроизводите видео с частотой 30 кадров в секунду на дисплее с частотой 60 Гц, вам просто нужно отобразить два идентичных кадра с частотой 60 Гц, всего 30 уникальных кадров.

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

Многие современные дисплеи также могут переключаться на разную частоту обновления. Таким образом, телевизор может переключиться на 48 Гц или даже 24 Гц, чтобы получить идеальную синхронизацию с кадром 24 кадра в секунду. Телевизоры с частотой 120 Гц не должны этого делать, поскольку 24 равномерно делятся на 120.

Когда использовать Vsync

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

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

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

Двойная или тройная буферизация Vsync

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

Так называемая «двойная буферизация» сегодня является нормой. Есть два буфера, которые по очереди действуют как «передний» и «задний» буфер. Дисплей рисует кадр из переднего буфера, а графический процессор записывает в задний буфер. Затем два буфера меняются ролями, и процесс повторяется.

Без Vsync два буфера можно поменять местами в любое время. Таким образом, возможно, что экран будет рисовать часть каждого буфера в кадре, что приведет к разрыву изображения. Когда вы включаете Vsync, разрывы исчезают. Однако, если графическому процессору не удается завершить запись в задний буфер за 1/60 секунды, этот кадр пропускается. Это приводит к эффективным 30 кадрам в секунду.

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

Тройная буферизация добавляет второй задний буфер, что означает, что всегда есть кадр, готовый к замене на передний буфер, что позволяет иметь нечетные числа, такие как 45 или 59 кадров в секунду на экране с частотой 60 Гц. Если вам предоставляется возможность, тройная буферизация всегда будет хорошим вариантом.

Расширенные типы Vsync

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

У Nvidia есть AdaptiveSync и FastSync, у каждой из которых свой интеллектуальный подход к Vsync. Первый включает Vsync только в том случае, если частота кадров игры равна или превышает частоту обновления. Если он упадет ниже этого значения, Vsync отключается, устраняя задержку буфера. Последнее решение лучше, поскольку оно обеспечивает тройную буферизацию и максимальную частоту кадров без разрывов.

AMD имеет Enhanced Sync, которая похожа на AdaptiveSync.

Vsync в сравнении с переменной частотой обновления

Существует мощная альтернатива Vsync, известная как переменная частота обновления. Технология Nvidia известна как G-Sync, а AMD разработала FreeSync , но сделала ее бесплатной и открытой для всех.

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

Главный нюанс в том, что сам монитор должен поддерживать эту технологию. Редко можно найти мониторы, поддерживающие оба стандарта, но Nvidia недавно уступила и добавила поддержку FreeSync для определенных мониторов. Вы также можете попытаться активировать FreeSync на мониторах, не включенных в белый список Nvidia, но в некоторых случаях результаты могут быть не очень хорошими.

Итак, подведем итоги того, что вам нужно знать об использовании Vsync:

  • Если ваша игра не может поддерживать частоту кадров, равную или превышающую частоту обновления вашего монитора, включите тройную буферизацию или уменьшите частоту обновления.
  • Если ваш графический процессор предлагает более продвинутую версию Vsync, стоит попробовать.
  • G-Sync и FreeSync являются желательными альтернативами Vsync, если у вас есть к ним доступ.
  • Если вам нужна минимальная задержка ввода для соревновательных игр, отключите Vsync и живите с разрывом экрана, если переменное обновление недоступно.

Это основы того, что такое Vsync. А теперь выходите и получайте удовольствие от игры без слез.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка / 5. Количество оценок:

Оценок пока нет. Поставьте оценку первым.

Тройная буферизация — что это такое?

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

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

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

Тройная и двойная буферизация

Тройная буферизация - что это такое?

Двойная буферизация

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

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

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

Тройная буферизация

Тройная буферизация — это разновидность двойной буферизации, отличающаяся тем, что используется три буфера данных.

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

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

Однако, обе этих технологии обычно связывают с V-Sync и не просто так. Далее рассмотрим почему.

Двойная и тройная буферизация с вертикальной синхронизацией

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

Примечание: Читателям стоит знать, что V-Sync повышает Input Lag.

В чем плюсы и минусы двойной буферизации с V-Sync?

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

Минусы. Суть в том, что, кроме проблемы простоя видеокарты при копировании данных, добавляется задержка ожидания отрисовки монитором. Это означает, что может очень сильно снижаться fps, если видеокарта генерирует меньшее число кадров, чем частота монитора. Например, 40-45 fps могут снизиться до 30 реальных fps, так как часть кадров будет отображаться за 1 такт монитора, а часть кадров за 2 такта монитора. Если же fps меньше 30, то снижение может быть вплоть до 15 кадров.

Второй существенный минус, что если реальный fps видеокарты в игре скачет, то это может быть ощутимым и дополнительно вызывать излишнюю усталость глаз. Например, если в одних сценах 40-50 fps, а в других 20-30 fps, то это означает, что fps будет чередоваться в стиле «30 — 15 — 30 — 15 — 15 — 30 — 30».

В чем плюсы и минусы тройной буферизации с V-Sync?

Плюсы. Те же, что и у двойной, но с некоторым отличием. Дело в том, что тройная буферизация позволяет избавиться от проблемы простоя, так как в моменты ожидания монитора или копирования данных, видеокарта формирует следующее изображение, что особенно полезно, если видеокарта формирует изображения то быстро, то медленно (однако, возможен минус в виде периодических пропусков изображений из-за V-Sync).

Минусы. Первый минус в том, что тройная буферизация требует больше вычислительных ресурсов. Второй минус в том, что если видеокарта всегда генерирует картинки быстро с учетом всех задержек, то толк от тройной буферизации теряется. Третий. Если компьютер «слабый», то включение этого метода может снизить реальный fps. Происходит это из-за первого минуса, так как требуется больше вычислительных ресурсов. В этом случае, лучше отключить не только тройную буферизацию, но и V-Sync.

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

Теперь, вы знаете что такое тройная буферизация, зачем она нужна и некоторые ее особенности.

Тройная буферизация что это

27 фев. 2019 г. в 23:05

1

Вертикальная синхронизация: Тройная/двойная буферизация Vertical sync: Triple / double buffering

День добрый. Такой вопрос возник. Купил сегодня монитор 144 герц. Вроде как всё настроил, по ютубу лазил. В частности нужна была правильная настройка в кс:го. Интересовала вертикальная синхронизация, которая всю жизнь была выключена, так как монитор был 60 герц всегда. И наткнулся на видео, где говорят, мол, при мониторе 144 герц лучше поставить двойную, а то и тройную буферизацию. К слову в игре 250+ фпс. Вот и думаю оставить ли вертикальную синхронизацию выключенной как и раньше или все же стоит переключить на двойную/тройную буферизацию? Good afternoon. Such a question has arisen. Bought today monitor 144 Hz. It seems like I set everything up, climbed on YouTube. In particular, the correct setting in cs: go was needed. I was interested in vertical synchronization, which was turned off all my life, since the monitor was always 60 hertz. And stumbled upon a video where they say, they say, with a 144 Hz monitor, it is better to have double or even triple buffering. By the way in the game 250+ fps. So I think whether to leave the vertical sync turned off as before or is it still worth switching to double / triple buffering?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *