Тема: ПОСТРОЕНИЕ РЕАЛИСТИЧНЫХ ИЗОБРАЖЕНИЙ С ИСПОЛЬЗОВАНИЕМ GLSL ШЕЙДЕРОВ ДЛЯ OPENGL
Закажите новую по вашим требованиям
Представленный материал является образцом учебного исследования, примером структуры и содержания учебного исследования по заявленной теме. Размещён исключительно в информационных и ознакомительных целях.
Workspay.ru оказывает информационные услуги по сбору, обработке и структурированию материалов в соответствии с требованиями заказчика.
Размещение материала не означает публикацию произведения впервые и не предполагает передачу исключительных авторских прав третьим лицам.
Материал не предназначен для дословной сдачи в образовательные организации и требует самостоятельной переработки с соблюдением законодательства Российской Федерации об авторском праве и принципов академической добросовестности.
Авторские права на исходные материалы принадлежат их законным правообладателям. В случае возникновения вопросов, связанных с размещённым материалом, просим направить обращение через форму обратной связи.
📋 Содержание
ведение 5
1 Библиотека OpenGL 6
1.1 Основные возможности OpenGL 6
1.2 Архитектура OpenGL 7
1.3 Синтаксис команд 8
1.4 Матричные преобразования 9
2 Шейдеры 13
2.1 Типы шейдер
📖 Введение
3D графика применяется во множестве различных областей: в науке, для наглядного изображения каких-то не до конца изученных процессов, в видеоиграх, которые давно не ограничиваются компьютерной платформой, в кинематографе для создания сложнейших спецэффектов, в медицине, строительстве, рекламе, и т.д. Имея качественную модель, можно увидеть объект, который не существует, посмотреть его со всех сторон, окунуться в виртуальный мир компьютерных игр, сидя дома перед экраном компьютера.
Следуя правилам создания качественной 3D модели, можно добиться эффекта присутствия, эффекта реальности. То есть, такие объекты отличаются от других правдоподобностью. В наше время реалистичные 3D изображения являются пиком совершенства в игровой, рекламной, строительной индустрии.
Моделирование 3D изображений это достаточно ресурсоемкая задача, ставящаяся перед современными вычислительными системами. И, несмотря на постоянное совершенствование техники, стремительное развитие технологий, требования к задачам остаются неизменно высокими, т.к. с ростом возможностей растут и требования. То есть, помимо оптимизации технической базы требуется оптимизация на уровне прикладного программирования.
Одним из таких методов оптимизации является грамотное использование графической библиотеки OpenGL, а именно, программирование на шейдерах. Оно дает возможность переложить часть сложных вычислений, связанных с отрисовкой сцены, с центрального процессора на, специально предназначенный для этого, графический процессор, являющийся аппаратной частью видеокарты.
Целью данной дипломной работы является построение реалистичного изображения трехмерных объектов с использованием библиотеки OpenGL и шейдеров.
1 Библиотека OpenGL
1.1 Основные возможности OpenGL
OpenGL является одним из самых распространенных прикладных программных интерфейсов (API - Application Programming Interface) к графической аппаратуре для разработки приложений в области двумерной и трехмерной графики.
Библиотека содержит в себе около 120 команд, которые может использовать программист для задания объектов и операций, необходимых для написания интерактивного графического приложения.
Основными особенностями этой графической библиотеки являются:
Стабильность - все нововведения создаются таким образом, чтобы сохранялась совместимость с предыдущим обеспечением.
Кроссплатформенность - независимо от используемой операционной системы, OpenGL гарантирует одинаковый визуальный результат. Кроме того, эти приложения работают и на рабочих станциях, и на суперкомпьютерах.
Интуитивно понятный интерфейс и продуманная структура, что обеспечивает легкость применения.
Библиотека OpenGL была разработана как единый независимый программный интерфейс для работы с графикой, который может быть реализован на любой платформе. По этой причине в ней нет функций создания окна, захвата пользовательского ввода, для этого нужно использовать средства операционной системы, на которой вы работаете. Также в ней нет высокоуровневых функций для создания трехмерных объектов, они строятся разбиением необходимых моделей на ряд геометрических примитивов - точек, линий, полигонов.
Основные функции, которые выполняет OpenGL можно разделить на несколько групп:
1. Функции описания примитивов - определяют объекты нижнего уровня, то есть конструируют фигуры из геометрических примитивов, создавая математическое описание объекта.
2. Функции описания источников света - позволяют описать параметры источника света и его положение в пространстве.
3. Функции задания атрибутов - атрибуты определяют способ вывода на экран. Другими словами. С помощью атрибутов задается цвет, характеристики материала, текстуры, параметры освещения.
4. Функции визуализации - позиционируют объекты в трехмерном пространстве и задают положение наблюдателя.
5. Функции геометрических преобразований - преобразуют математическое описание модели с ее атрибутами в пиксели на экране. Этот процесс называется растеризацией.
✅ Заключение
Выпускная квалификационная работа была выполнена под руководством консультанта старшего преподавателя кафедры программирования Н.Б. Буториной. Была разработана и реализована архитектура классов, способных отрисовывать трехмерные сцены с использованием основных методов OpenGL.
Создано демонстрационное приложение с использованием этой библиотеки. Реализованы алгоритмы 3D графики: освещение методом Фонга с текстурированием объекта и отрисовка теней алгоритмом карты теней с использованием техники сглаживания Percentage Closer Filtering (PCF).
А также, были проведены эксперименты, связывающие сложность сцены и время выполнения программы. В ходе эксперимента было выявлено, что сложность сцены несущественно влияет на скорость отрисовки кадра.
ЦП: AMD E-350 Proceccor 1.60 GHz .
GPU: Radeon HD 6330M Эффективная тактовая частота памяти 1800 МГц,
Память 1024 МБ.
Таблица 1 - Соотношение количества объектов сцены и времени отрисовки 1 кадра
Количество объектов Время, сек
1 0.00145484
3 0.00274012
6 0.00380818
12 0.00420133
100 0.00551013
1000 0.00631255





