7.1.5. Базовые стратегии реализации Существуют два основных подхода к организации выполнения перечисленных задач в графической системе, которые отличаются порядком выполнения отдельных операций. Чтобы понять суть отличия, будем считать, что вся система реализована в виде единой программы. В качестве исходной информации программа принимает множество вершин, специфицирующих геометрические объекты, а выходом программы является массив кодов засветки пикселей в буфере кадра. В процессе формирования изображения программа должна определить коды засветки всех пикселей в буфере, обработав описания всех геометрических объектов сиены и всех источников света. Следовательно, совершенно логично предположить, что в программе должно существовать множество вложенных циклов обработки базовых переменных, представляющих пиксели, геометрические объекты и источники света.

Приступая к разработке такой программы, нужно первым делом решить, что будет представлять собой внешний цикл. Последовательность отдельных этапов обработки в программе зависит от того, как будет сформулирован ответ на этот вопрос. Существуют два основных варианта ответа, т.е. варианта стратегии обработки: стратегия, ориентированная на формируемое изображение (image-oriented), и стратегия, ориентированная на обрабатываемые объекты сцены (object-oriented). Иногда их именуют подходом с сортировкой в начале (sort-first) и подходом с сортировкой в конце (sort-last), принимая во внимание, какое место в последовательности обработки отводится задаче удаления невидимых поверхностей.

При реализации стратегии, ориентированной на обрабатываемые объекты сцены, внешним в программе формирования изображения является цикл по всем геометрическим объектам:

for(each_object) render(object);

Такая стратегия идеально согласуется с конвейерной архитектурой графической системы. Описания вершин каждого объекта последовательно обрабатываются модулями системы, которые выполняют разного рода преобразования, определяют цвет и видимость. Описание многоугольника проходит через стадии обработки, схематически представленные на рис. 7.2. Обращаю ваше внимание на то, что после геометрических трансформаций при выполнении растрового преобразования очередного многоугольника его изображение может попасть в любую точку экрана, т.е. до выполнения преобразований невозможно сказать, где именно на экране появится изображение этого многоугольника (и появится ли во-


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