-
Notifications
You must be signed in to change notification settings - Fork 9
33. Алгоритм, использующий Z буфер.
Алгоритм работает в пространстве изображения.
Буфер кадра (регенерации) используется для заполнения атрибутов (интенсивности) каждого пикселя в пространстве изображения.
Для него требуется буфер регенерации, в котором запоминаются значения яркости, а также Z-буфер (буфер глубины), куда можно помещать информацию о координате z для каждого пикселя. Вначале в Z-буфер заносятся максимально возможные значения z, а буфер регенерации заполняется значениями пикселя, описывающими фон. Затем каждый многоугольник преобразуется в растровую форму и записывается в буфер регенерации, при этом, однако, не производится начального упорядочения.
Достоинства
- Простота. Сцены могут быть любой сложности
- Элементы сцены не нужно сортировать
Недостатки
- Большой объём памяти
- Трудоёмкость устранения лестничного эффекта
- Трудоёмкость реализации эффектов прозрачности
Алгоритм
- Заполнение буфера кадра фоновый значением интенсивности (цвета).
- Заполнение Z - буфера минимальным значением Z .
- Преобразование каждого многоугольника в растровую форму в произвольном порядке.
- Вычисление для каждого пикселя с координатами (x, y), принадлежащего многоугольнику, его глубины Z(x, y).
- Сравнение глубины Z(x, y) со значением Zбуф(x, y), хранящимся в Z-буфере для пикселя теми же координатами(x, y). Если Z(x, y)>Zбуф(x, y), то записать атрибут очередного многоугольника в буфер кадра и Zбуф(x, y) заменить на значение Z(x, y).
Замечание
Алгоритм, использующий Z -буфер, можно применять для построения разрезов поверхностей. В этом случае изменяется только операция сравнения глубины пикселя со значением, занесенным в буфер: [Z(x, y) > Zбуф (x, y)] и (Z(x, y <= Zразр), где Zразр - глубина искомого разреза.