Автор: Луна Ф.
2003.
Книга «Введение в программирование трехмерных игр с DirectX 9.0» представляет собой введение в программирование интерактивной трехмерной компьютерной графики с использованием DirectX 9.0, в котором основное внимание уделяется разработке игр. Книга начинается с исследования необходимых математических инструментов и базовых концепций трехмерной графики. Другие темы охватывают как выполнение в Direct3D базовых операций, таких как рисование графических примитивов, освещение, наложение текстур, альфа-смешивание и работу с трафаретами, так и использование Direct3D для реализации техник, необходимых в играх. Главы посвященные вершинным и пиксельным шейдерам включают описание каркасов эффектов и нового высокоуровневого языка программирования шейдеров (HLSL).
Эта книга представляет собой введение в программирование интерактивной трехмерной компьютерной графики с использованием DirectX 9.0, в котором основное ударение делается на разработку игр. Прочитав ее, вы изучите основы Direct3D, после чего сможете перейти к изучению и применению более сложных технологий. Раз вы держите в руках эту книгу, у вас есть начальное представление о том, что представляет собой DirectX. С точки зрения разработчика DirectX - это набор API (интерфейсов программирования приложений) для разработки мультимедийных приложений на платформе Windows. В этой книге мы сосредоточимся на ограниченном подмножестве DirectX, называемом Direct3D. Как видно из названия, Direct3D — это API, используемый для разработки приложений с трехмерной графикой.
Книга разделена на четыре части. В первой части исследуются математические инструменты, применяемые в остальных частях книги. Во второй части объясняются базовые технологии трехмерной графики, такие как освещение, текстурирование, альфа-смешивание и работа с трафаретами. Третья часть посвящена использованию Direct3D для реализации различных более интересных техник и приложений, таких как выбор объектов, визуализация ландшафтов, системы частиц, настраиваемая виртуальная камера, а также загрузка и визуализация трехмерных моделей (X-файлов). Темой четвертой части являются вершинные и пиксельные шейдеры, включая каркасы эффектов и новый (появившийся в DirectX 9.0) высокоуровневый язык шейдеров. Настоящее и будущее трехмерных игр неразрывно связано с использованием шейдеров, и, посвящая им целую часть, мы хотели получить книгу, соответствующую современному состоянию дел в программировании графики.
Оглавление
Благодарности
Введение
Предпосылки
Необходимые средства разработки
Рекомендуемое оборудование
Для кого предназначена эта книга
Установка DirectX 9.0
Настройка среды разработки
Использование библиотеки D3DX
Использование документации и примеров из DirectX SDK
Соглашения об оформлении кода
Обработка ошибок
Ясность
Примеры программ и дополнительная поддержка
Часть I. Математическая подготовка
Векторы в трехмерном пространстве
Равенство векторов
Вычисление модуля вектора
Нормализация вектора
Сложение векторов
Вычитание векторов
Умножение вектора на скаляр
Скалярное произведение векторов
Векторное произведение
Матрицы
Равенство, умножение матрицы на скаляр и сложение матриц
Умножение матриц
Единичная матрица
Инвертирование матриц
Транспонирование матриц
Матрицы в библиотеке D3DX
Основные преобразования
Матрица перемещения
Матрицы вращения
Матрица масштабирования
Комбинирование преобразований
Некоторые функции для преобразования векторов
Плоскости
D3DXPLANE
Взаимное расположение точки и плоскости
Создание плоскостей
Нормализация плоскости
Преобразование плоскости
Точка плоскости, ближайшая к заданной
Лучи
Лучи
Пересечение луча и плоскости
Итоги
Часть II. Основы Direct3D
Глава 1. Инициализация Direct3D
1.1. Обзор Direct3D
1.1.1. Устройство REF
1.1.2. D3DDEVTYPE
1.2. COM
1.3. Предварительная подготовка
1.3.1. Поверхности
1.3.2. Множественная выборка
1.3.3. Формат пикселей
1.3.4. Пул памяти
1.3.5. Цепочка обмена и переключение страниц
1.3.6. Буфер глубины
1.3.7. Обработка вершин
1.3.8. Возможности устройств
1.4. Инициализация Direct3D
1.4.1. Запрос интерфейса IDirect3D9
1.4.2. Проверка поддержки аппаратной обработки вершин
1.4.3. Заполнение структуры D3DPRESENT_PARAMETERS
1.4.4. Создание интерфейса IDirect3DDevice9
1.5. Пример приложения: инициализация Direct3D
1.5.1. Файлы d3dUtility.h/cpp
1.5.2. Каркас примера
1.5.3. Приложение D3D Init
1.6. Итоги
Глава 2. Конвейер визуализации
2.1. Представление моделей
2.1.1. Форматы вершин
2.1.2. Треугольники
2.1.3. Индексы
2.2. Виртуальная камера
2.3. Конвейер визуализации
2.3.1. Локальное пространство
2.3.2. Мировое пространство
2.3.3. Пространство вида
2.3.4. Удаление невидимых поверхностей
2.3.5. Освещение
2.3.6. Отсечение
2.3.7. Проекция
2.3.8. Преобразование порта просмотра
2.3.9. Растеризация
2.4. Итоги
Глава 3. Рисование в Direct3D
3.1. Буферы вершин и индексов
3.1.1. Создание буферов вершин и индексов
3.1.2. Доступ к памяти буфера
3.1.3. Получение информации о буфере
3.2. Режимы визуализации
3.3. Подготовка к рисованию
3.4. Рисование с буферами вершин и индексов
3.4.1. IDirect3DDevice9::DrawPrimitive
3.4.2. IDirect3DDevice9::DrawIndexedPrimitive
3.4.3. Начало и завершение сцены
3.5. Геометрические объекты D3DX
3.6. Примеры приложений: треугольники, кубы, чайники, D3DXCreate*
3.7. Итоги
Глава 4. Цвет
4.1. Представление цвета
4.2. Цвета вершин
4.3. Затенение
4.4. Пример приложения: цветные треугольники
4.5. Итоги
Глава 5. Освещение
5.1. Компоненты света
5.2. Материалы
5.3. Нормали вершин
5.4. Источники света
5.5. Пример приложения: освещенная пирамида
5.6. Дополнительные примеры
5.7. Итоги
Глава 6. Текстурирование
6.1. Координаты текстур
6.2. Создание текстур и разрешение текстурирования
6.3. Фильтры
6.4. Детализируемые текстуры
6.4.1. Фильтр детализации текстур
6.4.2. Использование детализируемых текстур в Direct3D
6.5. Режимы адресации
6.6. Пример приложения: текстурированный квадрат
6.7. Итоги
Глава 7. Смешивание
7.1. Формулы смешивания
7.2. Коэффициеты смешивания
7.3. Прозрачность
7.3.1. Альфа-канал
7.3.2. Указание источника альфа-компоненты
7.4. Создание альфа-канала с помощью утилиты DirectX Texture Tool
7.5. Пример приложения: прозрачный чайник
7.6. Итоги
Глава 8. Трафареты
8.1. Использование буфера трафарета
8.1.1. Создание буфера трафарета
8.1.2. Проверка трафарета
8.1.3. Управление проверкой трафарета
8.1.3.1. Эталонное значение трафарета
8.1.3.2. Маска трафарета
8.1.3.3. Значение трафарета
8.1.3.4. Операция сравнения
8.1.4. Обновление буфера трафарета
8.1.5. Маска записи трафарета
8.2. Пример приложения: зеркала
8.2.1. Математика отражений
8.2.2. Обзор реализации отражений
8.2.3. Код и комментарии
8.2.3.1. Часть I
8.2.3.2. Часть II
8.2.3.3. Часть III
8.2.3.4. Часть IV
8.2.3.5. Часть V
8.3. Пример приложения: плоская тень
8.3.1. Тени от параллельного источника света
8.3.2. Тени от точечного источника света
8.3.3. Матрица тени
8.3.4. Использование буфера трафарета для предотвращения двойного смешивания
8.3.5. Код и комментарии
8.4. Итоги
Часть III. Применение Direct3D
Глава 9. Шрифты
9.1. ID3DXFont
9.1.1. Создание ID3DXFont
9.1.2. Рисование текста
9.1.3. Вычисление частоты кадров
9.2. CD3DFont
9.2.1. Создание экземпляра CD3DFont
9.2.2. Рисование текста
9.2.3. Очистка
9.3. D3DXCreateText
9.4. Итоги
Глава 10. Сетки: часть I
10.1. Геометрия сетки
10.2. Подгруппы и буфер атрибутов
10.3. Рисование
10.4. Оптимизация
10.5. Таблица атрибутов
10.6. Данные о смежности
10.7. Клонирование
10.8. Создание сетки (D3DXCreateMeshFVF)
10.9. Пример приложения: создание и визуализация сетки
10.10. Итоги
Глава 11. Сетки: часть II
11.1. ID3DXBuffer
11.2. X-файлы
11.2.1. Загрузка X-файлов
11.2.2. Материалы в X-файле
11.2.3. Пример приложения: загрузка X-файла
11.2.4. Генерация нормалей вершин
11.3. Прогрессивные сетки
11.3.1. Создание прогессивной сетки
11.3.2. Веса атрибутов вершин
11.3.3. Методы ID3DXPMesh
11.3.4. Пример приложения: прогрессивная сетка
11.4. Ограничивающие объемы
11.4.1. Новые константы
11.4.2. Типы ограничивающих объемов
11.4.3. Пример приложения: ограничивающие объемы
11.5. Итоги
Глава 12. Построение гибкого класса камеры
12.1. Проектирование класса камеры
12.2. Детали реализации
12.2.1. Вычисление матрицы вида
12.2.1.1. Часть 1: Перемещение
12.2.1.2. Часть 2: Вращение
12.2.1.3. Комбинирование обеих частей
12.2.2. Вращение относительно произвольной оси
12.2.3. Наклон, рыскание и вращение
12.2.4. Ходьба, сдвиг и полет
12.3. Пример приложения: камера
12.4. Итоги
Глава 13. Основы визуализации ландшафтов
13.1. Карты высот
13.1.1. Создание карты высот
13.1.2. Загрузка файла RAW
13.1.2. Досуп к карте высот и ее модификация
13.2. Создание геометрии ландшафта
13.2.1. Вычисление вершин
13.2.2. Вычисление индексов — определение треугольников
13.3. Текстурирование
13.3.1. Процедурный подход
13.4. Освещение
13.4.1. Обзор
13.4.2. Вычисление затенения квадрата
13.4.3. Затенение ландшафта
13.5. «Ходьба» по ландшафту
13.6. Пример приложения: ландшафт
13.7. Возможные усовершенствования
13.8. Итоги
Глава 14. Системы частиц
14.1. Частицы и точечные спрайты
14.1.1. Формат структуры
14.1.2. Режимы визуализации точечных спрайтов
14.1.3. Частицы и их атрибуты
14.2. Компоненты системы частиц
14.2.1. Рисование системы частиц
14.2.2. Хаотичность
14.3. Примеры систем частиц: снег, фейерверк, след снаряда
14.3.1. Пример приложения: снег
14.3.2. Пример приложения: фейерверк
14.3.3. Пример приложения: след снаряда
14.4. Итоги
Глава 15. Выбор объектов
15.1. Преобразование из экранного пространства в окно проекции
15.2. Вычисление луча выбора
15.3. Преобразование лучей
15.4. Пересечение луча и объекта
15.5. Пример приложения: выбор объекта
15.6. Итоги
Часть IV. Шейдеры и эффекты
Глава 16. Введение в высокоуровневый язык шейдеров
16.1. Пишем шейдер на HLSL
16.1.1. Глобальные переменные
16.1.2. Входная и выходная структуры
16.1.3. Точка входа
16.2. Компиляция шейдеров на HLSL
16.2.1. Глобальные переменные
16.2.1.1. Получение дескриптора константы
16.2.1.2. Установка констант
16.2.1.3. Установка значений по умолчанию для констант
16.2.2. Компиляция HLSL-шейдера
16.3. Типы переменных
16.3.1. Скалярные типы
16.3.2. Векторные типы
16.3.3. Матричные типы
16.3.4. Массивы
16.3.5. Структуры
16.3.6. Ключевое слово typedef
16.3.7. Префиксы переменных
16.4. Ключевые слова, инструкции и приведение типов
16.4.1. Ключевые слова
16.4.2. Поток выполнения программы
16.4.3. Приведение типов
16.5. Операторы
16.6. Определяемые пользователем функции
16.7. Встроенные функции
16.8. Итоги
Глава 17. Знакомство с вершинными шейдерами
17.1. Объявление вершин
17.1.1. Описание объявления вершин
17.1.2. Создание объявления вершин
17.1.3. Разрешение использования объявлений вершин
17.2. Использование данных вершин
17.3. Этапы работы с вершинным шейдером
17.3.1. Написание и компиляция вершинного шейдера
17.3.2. Создание вершинного шейдера
17.3.3. Установка вершинного шейдера
17.3.4. Уничтожение вершинного шейдера
17.4. Пример приложения: рассеянный свет
17.5. Пример приложения: мультипликационная визуализация
17.5.1. Мультипликационное затенение
17.5.2. Код вершинного шейдера для мультипликационного затенения
17.5.3. Обводка силуэта
17.5.3.1. Представление краев
17.5.3.2. Проверка для краев силуэта
17.5.3.3. Генерация краев
17.5.4. Код вершинного шейдера обводки силуэта
17.6. Итоги
Глава 18. Знакомство с вершинными шейдерами
18.1. Основы мультитекстурирования
18.1.1. Разрешение работы с несколькими текстурами
18.1.2. Координаты для нескольких текстур
18.2. Входные и выходные данные пиксельного шейдера
18.3. Этапы работы с пиксельным шейдером
18.3.1. Написание и пиксельного вершинного шейдера
18.3.2. Создание пиксельного шейдера
18.3.3. Установка пиксельного шейдера
18.3.4. Уничтожение пиксельного шейдера
18.4. Объекты выборки в HLSL
18.5. Пример приложения: мультитекстурирование в пиксельном шейдере
18.6. Итоги
Глава 19. Каркас эффектов
19.1. Техники и проходы
19.2. Встроенные объекты HLSL
19.2.1. Объекты текстуры
19.2.2. Объекты выборки и режимы выборки
19.2.3. Объекты вершинных и пиксельных шейдеров
19.2.4. Строки
19.2.5. Аннотации
19.3. Состояния устройства в файле эффекта
19.4. Создание эффекта
19.5. Установка констант
19.6. Использование эффекта
19.6.1. Получение дескриптора эффекта
19.6.2. Активация эффекта
19.6.3. Начало эффекта
19.6.4. Установка текущего прохода визуализации
19.6.5. Завершение эффекта
19.6.6. Пример
19.7. Пример приложения: освещение и текстурирование в файле эффектов
19.8. Пример приложения: туман
19.9. Пример приложения: мультипликационный эффект
19.10. EffectEdit
19.11. Итоги
Приложение. Введение в программирование для Windows
Обзор
Ресурсы
События, сообщения, очередь сообщений и цикл обработки сообщений
GUI
Windows-приложение Hello World
Исследование программы Hello World
Включение файлов, глобальные переменные и прототипы
WinMain
WNDCLASS и регистрация
Создание и отображение окна
Цикл сообщений
Оконная процедура
Функция MessageBox
Улучшенный цикл сообщений
Итоги
Список литературы
Алфавитный указатель
Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Введение в программирование трехмерных игр с DirectX 9.0 - Луна Ф. - fileskachat.com, быстрое и бесплатное скачивание.
Скачать chm
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России.Купить эту книгу
Скачать книгу Введение в программирование трехмерных игр с DirectX 9.0 - Луна Ф. - depositfiles
Скачать книгу Введение в программирование трехмерных игр с DirectX 9.0 - Луна Ф. - letitbit
Дата публикации:
Теги: учебник по программированию :: программирование :: Луна :: компьютерная графика
Смотрите также учебники, книги и учебные материалы:
Следующие учебники и книги:
- Программирование на Java для детей, родителей, дедушек и бабушек, Файн Я., 2011
- Библиотека программиста C++ - Элджер Д.
- Язык программирования Python - Россум Г., Откидач Д.С.
- Учебник по созданию Shareware-программ
Предыдущие статьи:
- Искусство программирования, том 1, Кнут Д.Э.
- С# в задачах и примерах - Культин Н.Б.
- Создание игр для мобильных телефонов - Моррисон М.
- Интернет в Delphi