Но в системе компьютерной графики описания всех граней, т.е. все вершины модели, "проходят" через единую систему конвейерной обработки, следовательно, графическая система каким-то образом должна определить, какие же грани, в конце концов, выводить на экран. Таким образом, нужно изобрести алгоритм, который либо удалил бы из процесса обработки те грани, которые закрываются другими, - алгоритм удаления невидимых поверхностей (hidden-surface-removal algorithm), либо выделил те грани, которые видимы, - алгоритм выделения видимых поверхностей (visible-surface algorithm). Существует множество методов решения этой проблемы, некоторые из которых будут подробно рассмотрены в главе 7. В OpenGL используется один из них - алгоритм z-буфера (z-buffer algorithm). Для обращения к этому алгоритму в OpenGL требуется вызвать три функции. Ниже мы кратко опишем суть этого алгоритма, а к его подробному анализу вернемся в главе 7.

Все алгоритмы удаления невидимых поверхностей можно разделить на два больших класса. В алгоритмах объектного пространства (object-space algorithms) сначала выполняется упорядочение поверхностей объектов сцены. Объекты сортируются таким образом, что более дальние стоят в списке раньше тех, что расположены ближе к наблюдателю. Если затем выводить на экран поверхности в таком порядке, то в результате сформируется корректное изображение сцены. Применительно к нашему кубу процесс формирования изображения будет выглядеть так: сначала на экран выводятся изображения граней, ориентированных прочь от наблюдателя, а затем их перекрывают изображения граней, смотрящих на наблюдателя. В итоге на экране появляется корректное изображение куба4.

Алгоритмы пространства изображения (image-space algorithms) включаются в процесс проективного прес^твования и анализируют отношения между всеми точками объектов сцены, лежащими на одном и том же луче проецирования. Алгоритм z-буфера относится именно к этому классу и очень хорошо сочетается с конвейерной архитектурой формирования изображения в большинстве графических систем.


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