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

Тройная буферизация исключает потери времени процессора, так как при этом используется дополнительная видеопамять, а переключение страниц выполняется кадровыми синхроимпульсами. Но есть и другой путь исключения простоев, который предполагает переключение страниц не ожидая обратного хода луча по кадру. Аппаратное переключение возможно, если адаптер обеспечивает программный доступ к содержимому регистра текущего адреса или передачу через порт ввода-вывода команды на перенесение данных из регистра начального адреса в регистр текущего адреса. Можно также использовать копиОсновные термины и определения рование данных из активной страницы в видимую. При изучении GDI было показано, что даже адаптеры, не имеющие графического ускорителя, выполняют копирование блоков видеопамяти автономно от центрального процессора. Такое решение экономит видеопамять, но может привести к эффекту визуального разделения экрана (tearing). При этом на экране одновременно отображаются фрагменты двух последовательных кадров. Кадровая развертка начинается с вывода кадра г, после отображения части растра выполняется переключение страниц, и далее сканируется кадр г + 1. Заметим, что если частота смены кадров достаточно высока, то пользователь не замечает, что верхняя и нижняя части экрана составлены из разных кадров, поскольку изображение от кадра к кадру изменяется незначительно. Это свойство динамических изображений иногда называют временной когерентностью. Для отмены ожидания обратного хода луча по кадру в библиотеке DirectX предусмотрена специальная константа D3DPRESENT_INTERVAL_IMMEDIATE. При использовании OpenGL пользователь может добиться того же эффекта при помощи программ-твикеров (например, RivaTuner или GeForce Tweak Utility для видеоадаптеров ATI и NVIDIA). Эти программы осуществляют настройку драйвера или даже непосредственно перепрограммируют микросхему графического ускорителя.


⇐ Предыдущая| |Следующая ⇒