Сообщений 0    Оценка 4        Оценить  
Система Orphus

OpenGL. Руководство по программированию

Библиотека программиста

Авторы: Д. Шрайнер
М. Ву
Дж. Нейдер
Т. Девис
Издательство: Питер, 2006
624 страницы

Материал предоставил: Издательство ''Питер''
Найти в магазинах
Купить в Озоне (498 руб.)
Купить в издательстве "Питер"

Аннотация

Содержание
Об этой книге
Что нового в этом издании
Что необходимо знать перед прочтением
Как получить примеры программ
Обучающие программы по OpenGL от Нэйта Робинса
От издателя перевода

Аннотация

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

Содержание

Об этой книге
Что нового в этом издании
Что необходимо знать перед прочтением
Как получить примеры программ
Обучающие программы по OpenGL от Нэйта Робинса
Используемые стили
От издателя перевода
Благодарности

Глава 1. Введение в OpenGL

Что такое OpenGL
Немного программного кода
Синтаксис команд OpenGL
OpenGL как конечный автомат
Конвейер рисования OpenGL
Списки отображения
Вычислители
Операции над вершинами
Компоновка примитивов
Операции над пикселами
Компоновка текстур
Растеризация
Операции над фрагментами
Библиотеки, связанные с OpenGL
Включаемые файлы
GLUT, набор инструментов OpenGL
Анимация
Обновление с задержкой
Движение = Перерисовка + Обмен

Глава 2. Управление состоянием и рисование геометрических объектов

Основы рисования
Очистка окна
Установка цвета
Ускорение завершения рисования
Управление системой координат
Описание точек, линий и многоугольников
Что такое точки, линии и многоугольники?
Задание вершин
Рисование графических примитивов в OpenGL
Управление основными состояниями
Отображение точек, линий и многоугольников
Подробно о точках
Подробно о линиях
Подробно о многоугольниках
Векторы нормали
Массивы вершин
Шаг 1: активация массивов
Шаг 2: помещение данных в массивы
Шаг 3: разыменование и рисование
Смешанные массивы
Группы атрибутов
Несколько советов по построению полигональных моделей поверхностей
Пример: построение икосаэдра

Глава 3. Визуализация

Обзор: аналогия с камерой
Пример: рисование куба
Команды преобразования общего назначения
Модельно-видовые преобразования
Размышления о преобразованиях
Модельные преобразования
Видовые преобразования
Преобразования проецирования
Перспективное проецирование
Ортогональное проецирование
Отсечение объемом видимости
Преобразование окна просмотра
Определение окна просмотра
Измененная координата глубины
Проблемы преобразований
Управление стеком матриц
Стек модельно-видовых матриц
Стек матриц проекций
Дополнительные плоскости отсечения
Примеры объединения нескольких преобразований
Солнечная система
Сочлененная рука робота
Обратные, или имитационные, преобразования

Глава 4. Цвет

Цветовосприятие
Вычисление цвета
RGBA в сравнении с индексированным цветом
Режим RGBA
Режим индексации цвета
Выбор между режимами RGBA и индексации цвета
Переключение между режимами
Задание цветовой и полутоновой моделей
Задание цвета в режиме RGBA
Задание цвета в режиме индексации цвета
Задание модели закрашивания

Глава 5. Освещение

Удаление невидимых поверхностей
Реальный мир и освещение в OpenGL
Фоновый, рассеянный, отраженный и излучаемый свет
Цвета материала
Значения RGB для источников света и материалов
Пример: рисование освещенной сферы
Задание векторов нормалей для каждой вершины каждого объекта
Создание, размещение и включение одного или нескольких источников света
Выбор модели освещения
Задание свойств материала для объектов в сцене
Замечания на память
Создание источников света
Цвет
Положение и ослабление
Прожекторы
Несколько источников света
Управление положением и направлением источников света
Выбор модели освещения
Общее фоновое освещение
Локальная или бесконечно удаленная точка обзора
Двухстороннее освещение
Вторичный отраженный цвет
Включение источников света
Задание свойств материала
Рассеянное и фоновое отражение
Зеркальное отражение
Излучение
Изменение свойств материала
Режим цвета материала
Математика освещения
Излучение материала
Масштабированный общий фоновый свет
Вклады от источников света
Вторичный отраженный цвет
Освещение в режиме индексации цвета
Математика освещения в режиме индексации цвета

Глава 6. Смешивание, сглаживание, туман и отклонение

Смешивание
Факторы влияния источника и получателя
Включение смешивания
Объединение пикселов на основе выражений
Область применения смешивания
Пример смешивания
Трехмерное смешивание с использованием буфера глубины
Сглаживание
Сглаживание точек или линий
Сглаживание геометрических примитивов с помощью мультивыборки
Альфа-компонент и покрытие мультивыборки
Сглаживание границ многоугольников
Туман
Применение тумана
Уравнения тумана
Координаты тумана
Параметры точки
Отклонение многоугольников по глубине

Глава 7. Списки отображения

Для чего нужны списки отображения
Пример списка отображения
Философия проектирования списков отображения
Создание и выполнение списка отображения
Присвоение имени списку отображения и создание списка
Что сохраняется в списке отображения?
Выполнение списка отображения
Иерархические списки отбражения
Управление индексацией списков отображений
Выполнение составных списков отображения
Управление параметрами состояния с помощью списков отображения
Инкапсуляция изменений режима

Глава 8. Вывод пикселов, битовых образов, шрифтов и изображений

Битовые образы и шрифты
Текущая позиция растра
Вывод битового образа
Выбор цвета для битового образа
Шрифты и списки отображения
Описание и использование полного шрифта
Изображения
Чтение, запись и копирование пикселов
Конвейерная обработка изображений
Упаковка и распаковка пикселов
Режимы хранения пикселов
Операции при передаче пикселов
Табличные преобразования пикселов
Растяжение, сжатие и зеркальное отражение изображений
Чтение и рисование прямоугольных областей
Процесс вывода пиксельного прямоугольника
Советы по увеличению быстродействия вывода пикселов
Расширение Imaging Subset
Таблицы цветов
Свертки
Матрица цвета
Гистограмма
Метод минимакса

Глава 9. Наложение текстур

Общий обзор и пример
Действия при наложении текстур
Пример программы
Описание текстуры
Текстуры-посредники
Замещение изображения текстуры или его части
Одномерные текстуры
Трехмерные текстуры
Сжатые изображения текстур
Использование границ текстуры
MIP-отображение: детализация на множестве уровней
Фильтрация
Объекты текстур
Присвоение имен объектам текстур
Создание и использование объектов текстур
Удаление объектов текстур
Рабочий набор резидентных текстур
Функции текстур
Присвоение координат текстур
Вычисление подходящих координат текстуры
Повторяемые и обрезанные текстуры
Автоматическая генерация координат текстур
Создание контуров
''Сферические'' карты
''Кубические'' текстуры
Мультитекстурирование
Комбинирование функций текстур
Интерполирующие функции комбинирования
Применение вторичного цвета после текстурирования
Вторичный цвет при отключенном освещении
Вторичный отраженный цвет при отключенном освещении
Стек матриц текстур
Глубина текстур
Создание ''теневой'' карты
Генерация координат текстур и их отображение

Глава 10. Буфер кадров

Буферы и их применение
Буферы цвета
Очистка буферов
Выбор буферов цвета для записи и чтения
Маскирование буферов
Тесты и операции над фрагментами
Тест на отсечение
Альфа-тест
Тест трафарета
Тест глубины
Смешивание, размытие и логические операции
Буфер накопления
Сглаживание сцены
Размытие при движении
Глубина резкости
Плавные тени
''Дрожание''

Глава 11. Мозаичное представление и поверхности второго порядка

Мозаичное представление многоугольников
Создание объекта разбиения
Процедуры обратной связи
Свойства мозаичного разбиения
Описание многоугольника
Удаление объекта разбиения
Советы по увеличению производительности разбиения
Сообщения об ошибках GLU
Обратная совместимость
Поверхности второго порядка: сферы, цилиндры и диски
Управление квадратичными объектами
Управление атрибутами квадратичных объектов
Квадратичные примитивы

Глава 12. Вычислители и NURBS

Необходимые знания
Вычислители
Одномерные вычислители
Двухмерные вычислители
Применение вычислителей для текстур
Интерфейс NURBS библиотеки GLU
Пример простого NURBS-объекта
Управление NURBS-объектом
Создание NURBS-кривой или поверхности
Усечение NURBS-поверхностей

Глава 13. Выбор и обратная связь

Выбор
Основные шаги
Создание стека имен
Буфер выбора
Пример выбора
Выбор с помощью указателя мыши
Рекомендации по написанию программы, использующей механизм выбора
Обратная связь
Массив обратной связи
Использование маркеров в режиме обратной связи
Пример обратной связи

Глава 14. Теперь, когда вы знаете многое

Обработка ошибок
Какую версию я использую?
Версия библиотеки инструментов
Версии расширений для оконных систем
Расширения стандарта
Расширения стандарта для Microsoft Windows (WGL)
Полупрозрачность
Простой эффект ''растворения'' изображения
Использование фонового буфера для выбора объектов
Простая трансформация изображения
Послойное отображение
Сглаживание символов
Рисование округлых точек
Интерполяция изображений
Создание устойчивых изображений
Рисование закрашенных вогнутых многоугольников с помощью буфера трафарета
Нахождение перекрывающихся областей
Тени
Удаление невидимых линий
Удаление невидимых линий со смещением многоугольника
Удаление невидимых линий с помощью буфера трафарета
Текстурирование
Рисование изображений с буферизацией глубины
Области Дирихле
''Жизнь'' в буфере трафарета
Альтернативное применение glDrawPixels() и glCopyPixels()

Приложения

Приложение A. Порядок выполнения операций

Общий обзор
Векторные операции
Операции над вершинами
Сборка примитивов
Операции над пикселами
Память текстур
Операции над фрагментами
Прочее

Приложение Б. Параметры состояния

Команды запроса
Параметры состояния OpenGL
Текущие значения и связанные данные
Массив вершин
Преобразования
Окрашивание
Освещение
Растеризация
Мультивыборка
Текстурирование
Операции над пикселами
Управление буфером кадров
Пикселы
Вычислители
Рекомендации
Параметры, зависящие от реализации
Параметры глубины, зависящие от реализации
Прочее

Приложение В. OpenGL и оконные системы

Обращение к новым функциям OpenGL
GLX: расширение OpenGL для X Window System
Инициализация
Управление визуализацией
Прототипы GLX
AGL: расширение OpenGL для Apple Macintosh
Инициализация
Визуализация и контексты
Управление контекстом визуализации OpenGL
Экранная визуализация
Внеэкранная визуализация
Полноэкранная визуализация
Перестановка буферов
Обновление буферов визуализации
Использование шрифтов Apple Macintosh
Обработка ошибок
Прототипы AGL
PGL: расширение OpenGL для IBM OS/2 Warp
Инициализация
Управление визуализацией
Прототипы PGL
WGL: расширение OpenGL для Microsoft Windows 95/98/NT/ME/2000/XP
Инициализация
Управление визуализацией
Прототипы WGL

Приложение Г. Основы GLUT: инструментальный набор пакета разработчика OpenGL

Инициализация и создание окон
Управление окнами и событиями
Загрузка карты цвета
Инициализация и отображение трехмерных объектов
Управление фоновыми процессами
Запуск программ

Приложение Д. Вычисление векторов нормалей

Нахождение нормалей к аналитическим поверхностям
Нахождение нормалей к полигональным поверхностям

Приложение Е. Однородные координаты и матричные преобразования

Однородные координаты
Преобразование вершин
Преобразование нормалей
Матричные преобразования
Параллельный перенос
Масштабирование
Поворот
Перспективная проекция
Ортогональная проекция

Приложение Ж. Приемы программирования
Правильное обращение с OpenGL
Приемы увеличения производительности
Советы по применению GLX

Приложение З. OpenGL и инвариантность

Словарь терминов
Алфавитный указатель

Об этой книге

Графическая система OpenGL - это программный интерфейс к графическому оборудованию (GL означает Graphics Library - графическая библиотека). Она позволяет создавать интерактивные программы, которые формируют движущиеся цветные изображения в трехмерном пространстве. С помощью OpenGL вы можете управлять технологиями машинной графики, создавая изображения реальных объектов или воплощая другие плоды вашей фантазии. Это руководство объясняет, как создать OpenGL-программу, результатом работы которой является желаемый визуальный эффект.

Книга состоит из 14 глав. Первые пять глав рассказывают, как строить правильно раскрашенные и освещенные объекты в сцене.

Кроме того, книга содержит несколько приложений, которые могут вам пригодиться.

Наконец, небольшой словарь определяет ключевые термины, встречающиеся в этом руководстве.

Что нового в этом издании

Четвертое издание OpenGL Programming Guide включает в себя новый и обновленный материал, относящийся к OpenGL версий 1.3 и 1.4:

Новые возможности OpenGL 1.3:

Новые возможности OpenGL 1.4:

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

Исправлены ошибки.

Что необходимо знать перед прочтением

Для того чтобы понимать содержание книги, нужно уметь программировать на языке C и иметь начальные знания по математике (геометрии, тригонометрии, линейной алгебре, дифференциальному исчислению и дифференциальной геометрии). Даже если у вас небольшой опыт в компьютерной графике или его нет совсем, вам должно быть понятно большинство разделов книги. Конечно, машинная графика - неисчерпаемая тема, поэтому вы можете дополнительно прочитать следующие материалы:

Другое замечательное место, где вы можете получить практически любую информацию, - официальный веб-сайт OpenGL. На этом сайте находятся документация, консультации и новости. Это то место, откуда стоит начинать искать ответ на любой вопрос, возникающий при работе с OpenGL. Сайт расположен по адресу: http://www.opengl.org/.

Если вы начинаете программировать с использованием OpenGL, вам наверняка пригодится руководство OpenGL Reference Manual, подготовленное Architecture Review Board (изданное Addison-Wesley), которое было создано как дополнение к данной книге. Это справочное руководство смотрит на операции OpenGL с технической стороны; от информации, описывающей геометрические объекты, до получения изображения на экране. В нем также имеется полное описание всего набора команд OpenGL - аргументы функций, значения по умолчанию и коды возврата. Многие реализации OpenGL предоставляют интерактивный доступ к аналогичному материалу в виде руководства или другого справочного материала, который является более современным. Также много информации можно найти в Интернете; посмотрите на уже упомянутом официальном веб-сайте OpenGL.

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

Как получить примеры программ

В книге содержится множество примеров программ, показывающих использование различных технологий OpenGL. Эти программы созданы с помощью OpenGL Utility Toolkit (GLUT) Марка Килгарда (Mark Kilgard). Документацию по GLUT его же авторства можно найти в OpenGL Programming for the X Window System (издательство Addison-Wesley, 1996). За информацией по работе с GLUT обращайтесь к разделу ''Библиотеки, связанные с OpenGL'' главы 1 и приложению Г. Если у вас есть доступ в Интернет, вы можете получить исходные коды примеров программ и GLUT на анонимных FTP-серверах.

Исходные коды примеров программ из этой книги находятся по следующим адресам (выберите нужный файл в зависимости от архиватора, установленного в вашей системе):

Используйте соответствующие инструменты для распаковки и извлечения исходного кода из полученных файлов.

Исходные коды Марка Килгарда для GLUT (для Microsoft Windows или X Windows) доступны по адресу:

http://www.opengl.org/developers/documentation/glut/index.html

Многие реализации OpenGL также содержат примеры. Эти исходные коды, скорее всего, являются лучшими для вашей реализации, оптимизированными под нее. Где их взять, вы узнаете из документации для вашей версии OpenGL.

Обучающие программы по OpenGL от Нэйта Робинса

Нэйт Робинс (Nate Robins) написал комплект программ, обучающих основам программирования в OpenGL. Они предоставляют пользователю возможность изменения аргументов функций и наглядную демонстрацию результата изменения. В их число входят примеры по преобразованиям, освещенности, туману и текстурированию. Эти прекрасные небольшие примеры созданы с помощью уже упомянутой GLUT. Их исходные тексты можно получить на странице:

http://www.xmission.com/~nate/tutors.html

От издателя перевода

Ваши замечания, предложения и вопросы отправляйте по адресу электронной почты: mailto:comp@piter.com (издательство ''Питер'', компьютерная редакция).

Мы будем рады узнать ваше мнение!

Все исходные тексты программ, приведенные в книге, а также цветные рисунки к книге вы найдете по адресу: http://www.piter.com/download.

На веб-сайте издательства http://www.piter.com представлена подробная информация о других наших книгах.

    Сообщений 0    Оценка 4        Оценить