OpenGL в Delphi

OpenGL в Delphi

Введение
ГЛАВА 1 Подключение OpenGL
Событие, сообщение, ссылка
Почему приложения Delphi имеют большой размер
Программирование на Delphi без VCL

Минимальная Windows-программа
Вывод с использованием функций GDI
Перехват сообщений
Работа с таймером
Работа с мышью и клавиатурой


DLL
Контекст устройства и контекст воспроизведения
Минимальная программа OpenGL
Формат пиксела
Поумолчанию режим

Решение проблем
Вывод на компоненты Delphi средствами OpenGL
Стили окна и вывод OpenGL
Полноэкранные приложения
Типы OpenGL
Тип Tcolor и цвет в OpenGL
Подробнее о заголовочном файле opengl. pas

OpenGL в Delphi

ГЛАВА 2 Двумерные построения
Точка
Команда glScissor
Совместный вывод посредством функций GDI и OpenGL

Отрезок
Несколько готовых
Треугольник
Флаг получается наложением Двух отдельных треугольников
Эту картинку попробуйте нарисовать самостоятельно
Плавный переход
Результат работы программы из каталога Chapter2\Ex23
Многоугольник
Для построения независимых
To же, что и рис 2. 6, но константа GL QUAD STRIP

Фигуру для построения разбиваем на несколько частей
Так выглядит попытка
Так разбивается фигура, если требуется нарисовать внутреннее отверстие
Команда glEdgeFlag
Массивы вершин
Иллюстрация к примеру на использование массива вершин
Уже сейчас вы умеете создавать высококачественные изображения
Прямое обращение к пикселам экрана
Если вы умеете
Команда glGetString

Обработка ошибок
Масштабирование
Поворот
Перенос
Еще один пример
Еще один пример на поворот и
Сохранение и восстановление текущего положения
Первые шаги в пространстве

OpenGL в Delphi

ГЛАВА 3 Построения в пространстве
Параметры вида
В будущем мы получим более красивые картинки, начинаем же с самых простых

Для ориентировки в пространстве будем рисовать каркасную модель куба
Вот что происходит с кубом, если заднюю плоскость приближать слишком близко
Великий Леонардо нашел бы эту
Командой gluOrtho2D следует пользоваться
Так работает команда gluPerspectiveСмысл аргументов команды поясняется в комментариях:
Изменения в видовых установках приводят к трансформации объектов на экране
Команды задания видовых параметров
Командой gluLookAt удобно пользоваться при перемещениях точки зрения в пространстве
Матрицы OpenGL
Вывод содержимого матрицы модели

Результат работы проекта Point Test
Получить такие узоры на самом деле легко
Буфер глубины
Без использования буфера глубины пространство сцены передается некорректно
Теперь правильно
Источник света
Нa сцене появился источник светаПри создании окна включается источник света:
Объемные объекты
Теперь деталь стала объемной
Надстройки над OpenGL

В программе рукой манипулятора можно управлять
Quadric-объекты библиотеки glu
Проект иллюстрирует использование
Упрощенная модель звезды
Добавилась планета
В этом примере смотрим на систему с другой точки зрения
Совсем несложно получить полусферу или четверть сферы
Мы можем строить
Сплайны и поверхности Безье
Функции GDI позволяют строить кривые Безье

Кривая Безье, построенная с помощью функций библиотеки OpenGL
Классический пример на построение поверхности Безье
NURBS-поверхности
Классический пример на использование NURBS-поверхности
Команды библиотеки glu позволяют строить невыпуклые многоугольники
Вырезка внутри NURBS-поверхности
Дисплейные списки
Первый пример на использование дисплейных списков
В этом примере цветовые
Tess-обьекты

Tess-объекты можно использовать для тех же целей, что и NURBS-поверхности
Звездочка построена по координатам пяти вершин
Таймеры и потоки
При работе программы кубики вращаются по кругу
Эту систему мы возьмем в качестве тестовой для сравнения методов создания анимации
Проект Stars создает иллюзию полета в космосе
Проект Fontain
Теперь вы умеете рисовать даже такие "художественные произведения"

OpenGL в Delphi

ГЛАВА 4 Визуальные эффекты
Подробнее об источнике света
В примере можно менять текущие установки источника света

Свойства материала
Теперь тестовая деталь выглядит более реалистично
Объекты сцены имеют различные свойства материала
Для прямоугольника, расположенного слева, источник света находится в бесконечности
Классический пример, иллюстрирующий свойства материала
Новичков такие картинки обычно впечатляют
Эту композицию будем использовать в качестве тестовой
Команда glShadeModel может существенно повлиять на получающиеся образы
Наши астрономические модели становятся все более совершенными
Объекты сцены освещаются источниками различной фоновой интенсивности

Можно заглянуть внутрь чайников
Чайник снаружи изумрудный, внутри - золотой Такое увидишь только на экране монитора
Один из моментов работы проекта Gears
Пример на колебания, объем фигур изменяется с помощью операции масштабирования
Пора признаться: я в детстве мечтал стать космонавтом
Вывод на палитру в 256 цветов
Подробнее о поверхностях произвольной формы
Для построения поверхности используется
Для построения поверхности используется
Использование патчей

Еще одна модель из отдельных кусочков
Этот пример посвящается всем девушкам-программисткам
Буфер трафарета
Простейший пример на операции с буфером трафарета
Отверстие в квадрате сделано с помощью буфера трафарета
Теперь просверлены два отверстия, обратите внимание на их пересечения
При изменении размеров окна программы получается очень интересный эффект
Это один из самых интересных примеров
Смешение цветов и прозрачность
Простейший пример на смешение цветов

Эффект полупрозрачности сквозь куб просматривается сфера заднего плана
Фонтан точек, точки полупрозрачны
При рисовании полупрозрачных замкнутых объектов появляются ненужные узоры
Если на сцене присутствует
Обязательно посмотрите, как работает этот красивый пример
Подробнее о пиксельных операциях
В этом примере содержимое экрана запоминается в массиве
Часто разработчики нуждаются в нескольких экранах
Содержимое буфера глубины доступно для визуализации
Объекты можно рисовать стеклянными

Буфер накопления
Пример на использование буфера накопления
Эта композиция станет тестовой для примеров на буфер накопления
Эта композиция станет тестовой для дополнительного примера на эффект фокуса
Объекты сцены в примере рисуются нерезкими
Туман
Пример на использование тумана
Обычно эффект дымки используется для передачи глубины пространства
Тень и отражение
Для простых задач тень можно рисовать самому, по многоугольникам

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

Текстура
Пример использования одномерной текстуры
В примере используется двумерная текстура
Для наложения бликов требуются дополнительные манипуляции
Если в кадре используется
Такая текстура часто используется в демонстрационных проектах
Текстура загружается из файла
Теперь мы можем гордиться своими астрономическими моделями
Предлагаю вам дорисовать звезды
Только континенты непрозрачны

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

OpenGL в Delphi

ГЛАВА 5 Пример CAD-системы: визуализация работы робота
Постановка задачи
Работа программы визуализации робота
Приложение снабжено всплывающим меню

Структура программы
Модули приложения
"Все права зарезервированы"
Обмен данными с DLL
Дополнительные замечания
Еще один пример на визуализацию работы роботов
Для того чтобы нарисовать отверстия в плите, пришлось потрудиться

OpenGL в Delphi

ГЛАВА 6 Создаем свой редактор
Выбор элементов
Буфер выбора
В примере осуществляется выбор среди двадцати объектов со случайными координатами

Каждый патч поверхности можно перекрасить
Малопонятный сбой в программе
Все объекты, располагающиеся под
Вывод текста
Выводить символы в OpenGL совсем несложно
Без подписи и не догадаешься, что изображено
Пример на использование команды glBitmap
В программе из bmp-файла считывается монохромный растр
Выводимые символы корректно располагаются в пространстве
Связь экранных координат с пространственными

Для простейших задач перевода координат может использоваться gluUnProject
Команда gluProject позволяет узнать, в какой точке экрана осуществляется воспроизведение
Режим обратной связи
В режиме обратной связи библиотека OpenGL уведомляет о всех своих действиях
Трансформация объектов
Простейший интерактивный графический редактор
Картинки плоскостные, но выглядят как пространственные
Постановка задачи
Пространство модели нашего собственного модельера
Пользователю привычнее работать с такими окнами, чем с клавишами клавиатуры

Маркированный объект можно трансформировать
Структура программы
Несколько советов

OpenGL в Delphi

ПРИЛОЖЕНИЕ 1 OpenGL в Интернете
ПРИЛОЖЕНИЕ 2 Список литературы

Содержание раздела