Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Компьютерная графика.doc
Скачиваний:
128
Добавлен:
04.11.2018
Размер:
2.92 Mб
Скачать
    1. Описание графической системы OpenGl

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

Характерные особенности OpenGL

  • Стабильность - дополнения и изменения в стандарте реализуются таким образом, чтобы сохранить совместимость с разработанным ранее программным обеспечением;

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

  • Легкость применения - стандарт OpenGL имеет продуманную структуру и интуитивно понятный интерфейс, что позволяет с меньшими затратами создавать эффективные приложения, содержащие меньше строк кода, чем с использованием других графических библиотек. Необходимые функции для обеспечения совместимости с различным оборудованием реализованы на уровне библиотеки и значительно упрощают разработку приложений.

Основные возможности OpenGL

  • Набор базовых примитивов: точки, линии, многоугольники и т.п.;

  • Видовые и координатные преобразования;

  • Удаление невидимых линий и поверхностей (z-буфер);

  • Трассировка лучей (игнорирование тех лучей от источников света, которые не влияют на формирование изображения);

  • Использование сплайнов для построения линий и поверхностей;

  • Наложение текстуры и применение освещения;

  • Добавление специальных эффектов: тумана, изменение прозрачности, смешивание цветов (blending), устранение ступенчатости (anti-aliasing).

Структура программы с использованием OpenGL

В OpenGL нет встроенных функций для своей инициализации. Это связано с тем, что данный программный продукт является независимым от платформы графическим API. Инициализацию обеспечивает операционная среда. Однако, при использовании дополнительных библиотек (например, GLUT), инициализация необходима.

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

Использование примитивов в OpenGL

Под примитивами в OpenGL понимаются точки, линейные сегменты и полигоны. Так же как и в DirectX, полигоны представляют собой замкнутые трехмерные фигуры, построенные, минимум, по трем точкам.

В подключаемых библиотеках GLU и GLUT, описаны так же функции ряда геометрических фигур, таких как шар, цилиндр, диск, куб, конус, тор и т.д. Для оптимизации работы используется аппарат массивов вершин, аналогичный аппарату вершинного и индексного буфера в DirectX. Так же можно определить массивы нормалей и массивы цветов.

Использование матриц преобразования

Для задания различных преобразований объектов сцены в OpenGL используются операции над матрицами, при этом различают три типа матриц: видовая, проекций и текстуры. Все они имеют размер 4x4. Видовая матрица определяет преобразования объекта в мировых координатах, такие как параллельный перенос, изменение масштаба и поворот. Матрица проекций задает, как будут проецироваться трехмерные объекты на плоскость экрана (в оконные координаты), а матрица текстуры определяет наложение текстуры на объект.

Материалы и освещение в OpenGL

Для создания реалистических изображений необходимо определить как свойства самого объекта, так и свойства среды, в которой он находится. Первая группа свойств включает в себя параметры материала, из которого сделан объект, способы нанесения текстуры на его поверхность, степень прозрачности объекта.

Чтобы задать свойства сред, необходимо определить количество и свойства источников света, уровень прозрачности среды, а также модель источников света.

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

Использование текстур в OpenGL

Для использования текстуры необходимо сначала загрузить в память изображение нужной текстуры и передать его OpenGL.

При создании образа текстуры в памяти следует учитывать следующие требования:

  • Размеры текстуры, как по горизонтали, так и по вертикали должны представлять собой двойку в какой-либо степени. Это требование накладывается для компактного размещения текстуры в памяти и способствует ее эффективному использованию;

  • Необходимо предусмотреть случай, когда объект по размерам значительно меньше наносимой на него текстуры. Чем меньше объект, тем меньше должна быть наносимая на него текстура и поэтому вводится понятие уровней детализации текстуры. Каждый уровень детализации задает некоторое изображение, которое является, как правило, уменьшенной в два раза копией оригинала. Такой подход позволяет улучшить качество нанесения текстуры на объект.