15.5. Алгоритм, использующий z-буфер
Другим алгоритмом, даже более простым, чем предыдущий, является алгоритм, построенный на основе z-буфера, или, точнее, алгоритм, работающий в пространстве изображения и использующий буфер глубины. Для него требуется не только буфер регенерации, в котором запоминаются значения яркости, но также и z-бу-фер, куда можно помещать информацию о координате г для каждого пэла. Вначале в z-буфер заносятся максимально возможные значения г, а буфер регенерации заполняется значениями пэлов, описывающими фон. Затем каждый многоугольник преобразуется в растровую форму и записывается в буфер регенерации, при этом, однако, не производится начального упорядочения, которое было необходимо в алгоритме сортировки по глубине. При разложении в растр для каждой точки многоугольника выполняются следующие шаги:
1. Вычисление глубины многоугольника z(x, у) в точке (х, у).
2. Если г(х, у) меньше, чем значение z-буфера в позиции (х, у), то
а) г(х, у) заносится в элемент (х, у) z-буфера и
б) значение пэла, которое имеет многоугольник в рассматриваемой точке, помещается в элемент (х, у) буфера регенерации.
Если условие шага 2 выполняется, считается, что точка многоугольника расположена ближе к наблюдателю, чем точка, значение яркости которой находится в данный момент в позиции (х, у) буфера регенерации. Поэтому записываются новые значения глубины и яркости.
Весь процесс представляет собой не более чем поиск среди множества пар {zi(x, у), Vi(x, у)} для заданных х и у с целью найти минимальное гг. При успешном поиске минимальное из встретившихся значений z помещается в z-буфер для каждой позиции (х, у). Очередность появления объектов на экране определяется упорядоченностью, с которой обрабатываются многоугольники, т. е. они могут изображаться не обязательно в направлении от переднего плана к заднему или от заднего к переднему.
Этот алгоритм обладает недостатком: для него требуется большой объем памяти под z-буфер. Однако реализация алгоритма очень проста. Эксплуатационные характеристики остаются все время почти постоянными, поскольку в среднем с ростом числа многоугольников в видимом объеме уменьшается число пэлов, покрываемых одним многоугольником. Поэтому средний размер каждого множества пар, среди которых производится поиск, практически постоянен (разд. 15.8).
решается относительно этой переменной
Отношение А/С является постоянным, а Дх=1, поэтому, если -задана глубина в точке (х, у), для вычисления глубины в точке (#-Н, у) требуется выполнить лишь одно вычитание.
- 1. Векторные дисплеи.
- 2. Растровые дисплеи.
- Программистская модель интерактивной графики
- Лекция 2
- 640X480
- Лекция 4. Анимация
- Лекция 7. Алгоритмы растровой графики. Растровая графика.
- Лекция 9
- Перспективные проекции
- 15.1. Введение
- 15.2. Упрощение сравнений по глубине: перспективное преобразование
- 15.3. Исключение сравнений по глубине. Оболочки
- 15.4. Алгоритм сортировки по глубине
- 15.5. Алгоритм, использующий z-буфер
- 15.6. Алгоритмы построчного сканирования
- 15.7. Алгоритмы разбиения области
- 15.8. Эффективность алгоритма
- 15.9. Алгоритмы для криволинейных поверхностей
- Введение в OpenGl
- Void glVertex[2 3 4][s I f d] (type coords)
- Void glVertex[2 3 4][s I f d]V (type *coords)
- Gl_points каждая вершина задает координаты некоторой точки. Gl_lines каждая отдельная пара вершин определяет отрезок; ес-ли задано нечетное число вершин, то последняя вершина игнорируется.
- Gl_polygon последовательно задаются вершины выпуклог многоугольника.
- OpenGl в Delphi
- Событие. Сообщение. Контекст.