Также разработчик может использовать несколько невидимых страниц для создания очереди подготовленных кадров. Предположим, что в системе созданы три дополнительные страницы, пронумерованные от 0 до 2, и при выполнении команды переключения страниц в них содержатся подготовленные кадры (рис. 21.3). В результате переключения видимая страница получает номер 2 и в ней начинается рисование, страница 0 становится видимой, а бывшие страницы 1,2 с готовыми кадрами продвигаются к экрану. Соответственно, они получают номера 0, 1. За 8 мс изображение в активной странице будет подготовлено, и по следующему синхроимпульсу процесс повторится. Если же для формирования кадра потребуется более 10 мс, то система обеспечивает постоянную частоту переключения страниц, используя ранее подготовленные запасные кадры. После поступления очередного синхроимпульса рисование в странице 2 не закончено, она получит номер 1 и останется активной. Видимая страница станет невидимой и получит номер 2, но процесс рисования в ней не начнется (именно это состояние изображает рис. 21.3). Бывшая страница 1 получит номер 0 и будет по-прежнему содержать готовый к переключению кадр. Поскольку в очереди на переключение остается еще один подготовленный кадр, то и следующая смена кадра произойдет вовремя. Через 25 мс в активной странице кадр будет подготовлен, и за несколько следующих тактов быстрого (в течение 8 мс) рисования исходное состояние очереди с двумя подготовленными кадрами восстановится.
Может показаться, что в рассмотренном варианте получается дополнительный временной лаг, ведь то, что пользователь видит на экране, на три такта отстает от текущего модельного времени. Но в действительности задержка не увеличивается, поскольку в данном случае страницы переключаются по каждому синхроимпульсу.
Структура модели виртуального мира Структура модели виртуального мира Заданные в пространстве точка, отрезок и треугольные грани являются основными элементарными объектами (графическими примитивами), которые могут отображаться библиотеками трехмерной графики. Поэтому в графических системах форма геометрических объектов обычно задается в виде многогранников, как показано на рис. 21.4. Здесь использованы четырехугольные грани (в библиотеке OpenGL предусмотрено отображение четырехугольников). Но обычно даже плоские четырехугольные грани перед рисованием преобразуются в треугольники. Процесс мозаичного разбиения сложной фигуры на более простые называется тесселяцией.