Разработка приложения с использованием OpenGL для построения динамического изображения трехмерной модели объекта "Нефтяная платформа" - Курсовая работа
Создание программы на языке C с использованием графических библиотек OpenGL в среде Microsoft Visual Studio. Построение динамического изображения трехмерной модели объекта "Нефтяная платформа". Логическая структура и функциональная декомпозиция проекта.
Аннотация к работе
Библиотека OPENGL представляет собой программный интерфейс для аппаратного обеспечения машинной графики. Этот интерфейс состоит приблизительно из 250 отдельных команд (почти 200 команд в ядре OPENGL и еще 50 команд в библиотеке утилит OPENGL), которые используются для того, чтобы определить объекты и операции, необходимые для создания интерактивных трехмерных прикладных программ. Библиотека OPENGL разработана в качестве низкоуровневого, аппаратно-независимого интерфейса, допускающего реализацию на множестве различных аппаратных платформ.Основная структура программы может быть проста: ее задачи состоят в том, чтобы инициализировать некоторые состояния, которые управляют тем, как библиотека OPENGL выполняет визуализацию, и определить объекты, которые будут визуализированы. Конечное визуализированное изображение состоит из пикселей, выводимых на экран; пиксель представляет собой наименьший видимый элемент, который аппаратные средства отображения могут поместить на экран.Команды библиотеки OPENGL используют префикс gl. Точно так же имена констант, определенных в библиотеке OPENGL, начинаются с префикса GL_, записываются целиком заглавными буквами и используют символы подчеркивания, чтобы разделить отдельные слова (например, GL__COLOR_BUFFER_BIT). Буквы, используемые в качестве суффиксов для того, чтобы определить эти типы представлены в таблице 1.1. Суффикс Описание Тип в С Тип в OPENGL b 8-разрядное целое signed char GLBYTE s 16-разрядное целое short GLSHORT i 32-разрядное целое Int long GLINT, GLSIZEI f 32-разрядное число с плавающей точкой float GLFLOAT, GLCLAMPF d 64-разрядное число с плавающей точкой double GLDOUBLE, GLCLAMPD ub 8-разрядное беззнаковое целое unsigned char GLUBYTE, GLBOOLEAN us 16-разрядное беззнаковое целое unsigned short GLUSHORT ui 32-разрядное беззнаковое целое unsigned int unsigned long GLUINT, GLENUM, GLBITFIELD Таким образом, две команды GLVERTEX2i (1,3); GLVERTEX2f (1.0f, 3.0f); являются эквивалентными, за исключением того, что первая из них определяет координаты вершины как 32-разрядные целые числа, а вторая определяют их как числа с плавающей точкой с одинарной точностью.Например, текущий цвет представляет собой переменную состояния. Можно установить в качестве текущего белый, красный, или любой другой цвет, и после этого каждый объект будет выводиться на экран с этим цветом до тех пор, пока для текущего цвета не будет установлено какое-нибудь другое значение. Текущий цвет является лишь одной из множества переменных состояния, которые поддерживает библиотека OPENGL. Другие переменные состояния управляют такими вещами, как текущая визуализация и преобразования проецирования, шаблоны штриховки линий и многоугольников, режимы вывода многоугольников на экран, соглашения по упаковке пикселей, местоположение и характеристики источников освещения, а также свойства материалов объектов, выводимых на экран.Большинство реализаций библиотеки OPENGL имеет одинаковый порядок операций, определенную последовательность стадий обработки, которая называется конвейером визуализации OPENGL. Геометрические данные (вершины, прямые и многоугольники) проходят через последовательность блоков, в число которых входят вычислители и операции обработки вершин, в то время как пиксельные данные (пиксели, изображения и растровые образы) для определенной части процесса визуализации обрабатываются по-другому. Все данные, вне зависимости от того, описывают ли они геометрию или пиксели, могут быть сохранены в списке вывода для текущего или более позднего использования (альтернативой сохранению данных в списке вывода является немедленная обработка данных, она также известна под названием непосредственный режим работы). После того как список вывода был создан, сохраненные данные посылаются из этого списка вывода точно так же, как если бы они были посланы прикладной программой в непосредственном режиме работы. Для данных по вершинам следующей является стадия "операций обработки вершин", которая преобразовывает вершины в примитивы.Первоначально необходимо подключить используемые свободно распространяемые библиотеки. Для этого в файле stdafx.h следует подключить заголовочные файлы, содержащие описания функций OPENGL, а именно: gl.h, glu.h, glaux.h, после чего следует в свойствах проекта прописать библиотеки, необходимые для работы с функциями OPENGL: opengl32.lib, glu32.lib, glaux.lib. Процесс инициализации библиотеки OPENGL состоит из следующих этапов: 1. После заполнения полей структуры, необходимо установить в системе выбранный формат пикселей.Разработанную модель нефтяной платформы можно условно разбить на группы основных элементов: 1. Фото прототипа разработанной модели, диаграмма классов и обобщенный алгоритм работы программы вынесены в приложение А. Листинг проекта вынесен в приложение Б. Во избежание сложностей в подборе координат все отдельные элементы сцены заключены в операторные скобки GLPUSHMATRIX( ), GLPOPMATRIX( ). Область вывода сцены на экран определена таким образом, что подстраивается под форму
План
Содержание
ВВЕДЕНИЕ
1. Программирование с использованием библиотеки OPENGL
1.1 Программный код OPENGL
1.2 Синтаксис команд OPENGL
1.3 OPENGL как конечный автомат
1.4 Конвейер визуализации OPENGL
2. Разработка приложения для построения динамического изображения трехмерной модели объекта "нефтяная платформа"
2.1 Инициализация библиотеки OPENGL
2.2 Проектирование трехмерной модели и настройка параметров отображения сцены
2.3 Разработка инструментов управления настройками приложения
2.4 Обработка событий
3. Информационное и программное обеспечение
3.1 Общие сведения о программе
3.2 Функциональное назначение
3.3 Логическая структура и функциональная декомпозиция проекта
3.4 Требования к техническому и программному обеспечению