Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 2.docx
Скачиваний:
12
Добавлен:
18.05.2015
Размер:
110.71 Кб
Скачать

Слайд 5 – Буфер кадра Слайд 6 – Архитектура OpenGl

ФункцииOpenGL реализованы в модели клиент-сервер. Приложение выступает в роли клиента - оно вырабатывает команды, а сервер OpenGL интерпретирует и выполняет их. Сам сервер может находиться как на том же компьютере, на котором находится клиент (например, в виде динамически загружаемой библиотеки DLL), так и на другом (при этом может быть использован специальный протокол передачи данных между машинами).

OpenGL обрабатывает и рисует в буфере кадра графические примитивы с учетом некоторого числа выбранных режимов.

Примитивы определяются набором из одной или более вершин (vertex). Вершина определяет точку, конец отрезка или угол многоугольника. С каждой вершиной ассоциируются некоторые данные (координаты, цвет, нормаль, текстурные координаты и т.д.), называемые атрибутами. В подавляющем большинстве случаев каждая вершина обрабатывается независимо от других.

С точки зрения архитектуры графическая система OpenGL является конвейером, состоящим из нескольких последовательных этапов обработки графических данных.

Аппроксимация кривых и поверхностей

При отображении векторные геометрические примитивы должны быть представлены в виде (иногда достаточно большого) набора вершин. Однако многие полезные и часто используемые кривые и поверхности могут быть описаны гораздо меньшим количеством параметров. На этапе аппроксимации кривых и поверхностей по простому описанию геометрического примитива формируется набор вершин. При этом можно определять количество вершин и тем самым управлять качеством и производительностью визуализации.

Результатом прохождения этого этапа является сцена, представленная только в виде простейших геометрических примитивов - вершин.

Обработка вершин и сборка примитивов

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

Результатом этого этапа является полное описание геометрических примитивов и их свойств, размещённых в пространстве в соответствии с установленной системой координат, и готовое к этапу растеризации.

Растеризация и обработка фрагментов (дискретизация)

В процессе растеризациииз векторных и растровых данных создаются фрагменты. Каждый фрагмент соответствует пикселу буфера кадра. На этом этапе формируются заполненные цветом многоугольники, пунктирные линии заданной ширины, точки заданного размера, применяется сглаживание (antialiasing).

Операции над пикселями

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

Передача данных в буфер кадра

Буфер кадра - это область памяти, которая представляет собой пиксельный массив отображаемый на экране. Библиотека OpenGLможет работать сразу с несколькими буферами кадров (пока один буфер отображается другие уже формируются). Это позволяет добиться эффективного формирования и визуализации анимационных кадров. Пиксельное изображение из буфера кадра может быть считано в системную память, обработано как обычный массив, упаковано, сохранено и снова использовано.

КомандыOpenGL всегда обрабатываются в том порядке, в котором они поступают, хотя могут происходить задержки перед тем, как проявится эффект от их выполнения.