Цепочки буферов
Цепочка буферов — это коллекция буферов, которые используются для отображения кадров пользователю. Каждый раз, когда приложение представляет новый кадр для отображения, первый буфер в цепочке буферов занимает место отображаемого буфера. Этот процесс называется переключение или перевернутый.
Графический адаптер содержит указатель на поверхность, представляющую изображение, отображаемое на мониторе, называемое передним буфером. По мере обновления монитора графические карты отправляют содержимое переднего буфера в монитор, который будет отображаться. Однако это приводит к проблеме слезоточивого изображения при отрисовке графики в режиме реального времени. Сердце проблемы заключается в том, что мониторинг частоты обновления очень медленные по сравнению с остальной частью компьютера. Общие частоты обновления варьируются от 60 Гц (60 раз в секунду) до 100 Гц.
Если приложение обновляет передний буфер, пока монитор находится в середине обновления, отображаемое изображение будет вырезаться наполовину с верхней половиной дисплея, содержащего старое изображение, а в нижней половине, содержащей новое изображение. Эта проблема называется слезоточивой.
Избегание разрыва
Direct3D реализует два варианта, чтобы избежать разрыва:
Возможность разрешить только обновления монитора в операции вертикального извлечения (или вертикальной синхронизации). Монитор обычно обновляет свое изображение, перемещая светлая закрепление по горизонтали, зигзагов с верхней левой части монитора и заканчивая в правом нижнем углу. Когда светящая закрепление достигает нижнего края, монитор откатывает световую закрепление, переместив его обратно в верхнюю левую, чтобы процесс может начаться снова.
Этот пересчет называется вертикальной синхронизацией. Во время вертикальной синхронизации монитор не рисует ничего, поэтому любое обновление переднего буфера не будет видно, пока монитор не начнет рисовать снова. Вертикальная синхронизация относительно медленна; однако недостаточно медленно, чтобы отобразить сложную сцену во время ожидания. Что необходимо, чтобы избежать разрыва и быть в состоянии отрисовки сложных сцен является процессом обратной буферизации.
Вариант использования метода обратной буферизации. Обратная буферизация — это процесс рисования сцены на внеэкранной поверхности, называемой буфером назад. Любая поверхность, кроме переднего буфера, называется внеэкранной поверхностью, так как она никогда не просматривается непосредственно монитором.
С помощью обратного буфера приложение имеет свободу отрисовки сцены всякий раз, когда система неактивна (т. е. сообщения windows не ожидают) без необходимости учитывать частоту обновления монитора. Обратная буферизация приводит к дополнительному осложнению того, как и когда переместить буфер обратно в передний буфер.
Перевернутые поверхности
Процесс перемещения обратного буфера в передний буфер называется перевернутой поверхностью. Так как графическая карта просто использует указатель на поверхность для представления переднего буфера, простое изменение указателя — это все, что необходимо для установки обратного буфера на передний буфер. Когда приложение запрашивает Direct3D представить задний буфер в передний буфер, Direct3D просто "переворачивает" два указателя поверхности. Результатом является то, что задний буфер теперь является новым передним буфером, а старый передний буфер — новый задний буфер.
Перевернутый поверхности вызывается всякий раз, когда приложение запрашивает устройство Direct3D представить задний буфер; Однако Direct3D можно настроить для очереди запросов до тех пор, пока не будет выполнена вертикальная синхронизация. Этот параметр называется интервалом представления устройства Direct3D. Данные в новом обратном буфере могут не использоваться повторно, в зависимости от того, как приложение указывает, как Direct3D должен обрабатывать перевернутые поверхности.
Перевернутые поверхности являются ключевыми в мультимедиа, анимации и игровом программном обеспечении; это эквивалентно тому, как можно сделать анимацию с помощью панели бумаги. На каждой странице художник немного изменяет цифры, чтобы при быстром переворачивании между листами рисунок отображалась анимированным.
Связанные темы