Оглавление Введение 1
ЧАСТЬ I. ЭВОЛЮЦИЯ OPENGL 7
Глава 1. Развитие OpenGL 9
Версия 1.1 11
Версия 1.2 13
Версия 1.3 15
Версия 1.4 17
Версия 1.5 19
Сводка изменений в версиях OpenGL 20
Глава 2. Расширения ARB_vertex_program и ARB_fragment_program. Появление Cg 23
Глава 3. Появление OpenGL 2.0 и GLSL 67
ЧАСТЬ II. ДОПОЛНИТЕЛЬНЫЕ БИБЛИОТЕКИ 73
Глава 4. Библиотека GLUT 75
Инициализация 76
Начало цикла обработки сообщений 78
Работа с окнами 79
Работа с меню 82
Установка обработчиков сообщений 84
Получение информации о текущем состоянии GLUT 88
Вывод текста 91
Вывод простейших объектов 92
Сфера 92
Куб 92
Конус 93
Тор 93
Додекаэдр 94
Октаэдр 94
Тетраэдр 94
Икосаэдр 95
"Чайник" 95
Глава 5. Общие сведения о библиотеках GLH, NV_MATH и NV_UTIL 96
Библиотека GLH 96
Инкапсуляция основных математических классов 96
Объектная надстройка над GLUT 105
Объектная надстройка над OpenGL 109
Библиотека NV_MATH 114
Библиотека NV_UTIL 119
Чтение текстур в формате TGA 120
Чтение текстур в формате JPG 121
Чтение данных из ZIP-архивов 122
Чтение моделей в формате ASE 123
Глава 6. Основные классы для работы с векторами, матрицами и кватернионами 125
Работа с векторами 125
Работа с матрицами 135
Работа с кватернионами 137
Глава 7. Работа с расширениями, библиотека libExt 139
Глава 8. Библиотеки libTexture и libTexture3D 142
Глава 9. Реализация р-буфера в виде класса, использование расширения EXT_framebuffer_object для создания внеэкранных буферов 149
Работа с р-буфером в Microsoft Windows 151
Непосредственное создание р-буфера 151
Выбор р-буфера как текущей цели для рендеринга 154
Уничтожение р-буфера 154
Обработка переключения видеорежима 154
Копирование данных из р-буфера в текстуру 155
Связывание р-буфера с текстурой 155
Реализация р-буфера для платформы Windows 157
Работа с р-буфером в Linux 160
Использование расширения EXT_framebuffer_object 165
Глава 10. Понятие камеры. Работа с библиотекой libCamera 179
Глава 11. Библиотека libMesh. Работа с полигональными моделями и их загрузка из популярных форматов 204
ЧАСТЬ III. ШЕЙДЕРЫ 241
Глава 12. Введение в GLSL. Описание синтаксиса, простые примеры 243
Основные типы данных и переменных 243
Структуры 244
Массивы 245
Переменные 245
Операторы и выражения 248
Конструкторы 250
Работа с компонентами векторов и матриц 251
Работа со структурами 253
Основные операции над векторами и матрицами 253
Основные операторы и конструкции 255
Стандартные переменные, атрибуты и константы 258
Специальные переменные для вершинных шейдеров 258
Специальные переменные для фрагментных шейдеров 259
Стандартные константы 260
Стандартные атрибуты для вершинного шейдера 261
Стандартные uniform-переменные — параметры состояния OpenGL 261
Стандартные varying-переменные 265
Стандартные функции 265
Тригонометрические функции и функции для работы с углами 266
Экспоненциальные функции (возведение в степень, нахождение логарифмов) 266
Функции общего назначения 267
Геометрические функции 269
Матричные функции 270
Функции для сравнения векторов 270
Функции для доступа к текстурам 271
Функции для работы с производными 273
Шумовые функции 274
Простейший пример использования вершинных и фрагментных шейдеров 275
Глава 13. Простейшие вершинные и фрагментные шейдеры. Реализация основных моделей освещения 276
Диффузная модель освещения 277
Бликовое освещение по Блинну 280
Бликовое освещение по Фонгу 283
Использование карт нормалей 287
Анизотропные модели освещения 291
Подсветка края 297
Модель освещения Гуч 299
Глава 14. Практическое использование GLSL в программах на С++, необходимые расширения 302
Необходимые расширения 302
Расширение GL_ARB_shading_language_100 302
Расширение GL_ARB_shader_objects 303
Расширение GL_ARB_vertex_shader 308
Расширение GL_ARB_fragment_shader 310
Получение информации о поддержке GLSL 311
Простейшая программа, использующая GLSL 315
"Заворачиваем" шейдеры на GLSL в класс 324
Глава 15. Разработка шейдеров на GLSL в интегрированной среде RenderMonkey 347
Настройка RenderMonkey 351
Создание нового проекта 352
Глава 16. Использование основных моделей освещения, моделирование преломления и дифракции, обработка изображений на GLSL 375
Использование шейдеров из главы 13 375
Использование шейдеров для анимации 386
Моделирование преломления 394
Моделирование дифракции света 399
Обработка изображений средствами GLSL 412
Фильтр Sepia 413
Гамма-коррекция 419
Фильтр выделения границ 420
Коррекция цвета в пространстве HSV 422
Размытие изображения 425
Глава 17. Использование шумовой функции в моделировании. Моделирование облаков, волн и материалов 427
Использование шумовой функции для рендеринга "мыльных пузырей" 432
Искажение нормали при помощи шумовой функции 440
Турбулентность 443
Ржавление 450
Рябь на воде 459
Облака 460
Мрамор 463
Дерево 469
Система "сверкающих" частиц 472
Огонь 474
Приложение. Описание компакт-диска 477
Список литературы и интернет-ресурсов 479
Предметный указатель 481
VI Оглавление VII Оглавление