Введение в программирование трехмерных игр с DX9
AnonsПредпосылки
Необходимые средства разработки
Рекомендуемое оборудование
Для кого предназначена эта книга
Установка DirectX 0
I Для разработки приложений
I Отладочные сообщения, выводимые если объект Direct не был освобожден
Настройка среды разработки
I Добавление путей к включаемым и библиотечным файлам DirectX в VC++ 0
I Указание библиотекчных файлов для компоновки с проектом в VC++ 0
Использование библиотеки DX
Использование документации и примеров из DirectX SDK
I Просмотр документации, относящейся к SDK
Соглашения об оформлении кода
Обработка ошибок
Ясность
Примеры программ и дополнительная поддержка
Введение в программирование трехмерных игр с DX9
Глава Инициализация DirectОбзор Direct
Взаимосвязь между приложением, Direct и аппаратурой
Устройство REF
DDEVTYPE
COM
Предварительная подготовка
Поверхности
Поверхность
Множественная выборка
Слева изображена линия
Формат пикселей
Пул памяти
Цепочка обмена и переключение страниц
Цепочка обмена из двух поверхностей (первичного и вторичного буфера)
Показ Используя содержащую
Буфер глубины
Группа объектов, частично закрывающих друг друга
Обработка вершин
Возможности устройств
Инициализация Direct
Запрос интерфейса IDirect9
Проверка поддержки аппаратной обработки вершин
Заполнение структуры DPRESENT_PARAMETERS
Создание интерфейса IDirectDevice9
Пример приложения: инициализация Direct
Окно программы, рассматриваемой в этой главе
Файлы dUtilityh/cpp
Каркас примера
Приложение D Init
Итоги
Введение в программирование трехмерных игр с DX9
Глава Конвейер визуализацииЛевое изображение показывает несколько
Представление моделей
Ландшафт, представленный с помощью сетки из треугольников
Треугольник, заданный тремя вершинами
Форматы вершин
Треугольники
Прямоугольник, образованный из двух треугольников
Индексы
Составленный из треугольников куб
Виртуальная камера
Усеченная пирамида, определяющая область пространства, которую видит камера
Конвейер визуализации
Упрощенная схема конвейера визуализации
Локальное пространство
Чайник, описанный в его собственной, локальной системе координат
Мировое пространство
Несколько трехмерных объектов, описанных в единой мировой системе координат
Пространство вида
Преобразование из мирового пространства
Удаление невидимых поверхностей
Объект с фронтальными и обратными полигонами
Сцена после отбрасывания обратных граней
Освещение
Отсечение
Отсечение геометрии, находящейся вне видимого пространства
Проекция
Проекция точки в трехмерном пространстве в окно проекции
Компоненты пирамиды видимого пространства
Преобразование порта просмотра
Прямоугольник порта просмотра
Растеризация
Растеризация треугольника на экране
Итоги
Введение в программирование трехмерных игр с DX9
Глава ЦветПредставление цвета
-Разрядное представление цвета
Цвета вершин
Затенение
Слева равномерное затенение треугольника
Пример приложения: цветные треугольники
Итоги
Введение в программирование трехмерных игр с DX9
Глава ОсвещениеКомпоненты света
Материалы
Нормали вершин
Лицевая нормаль поверхности
Нормали вершин поверхности
Пример объекта, у которого нормали
Источники света
Точечный свет
Направленный свет
Зональный свет
Пример приложения: освещенная пирамида
Окно приложения LitPyramid
Дополнительные примеры
Итоги
Введение в программирование трехмерных игр с DX9
Глава ТекстурированиеКуб с текстурой деревянного ящика
Координаты текстур
Система координат текстуры иногда называемая пространством текстуры
Слева изображена треугольная грань
Создание текстур и разрешение текстурирования
Фильтры
Детализируемые текстуры
Цепочка текстур с понижаемой детализацией;
Фильтр детализации текстур
Использование детализируемых текстур в Direct
Режимы адресации
Режим отражения
Пример приложения: текстурированный квадрат
Окно с изображением текстурированого квадрата, полученное в приложении TexQuad
Итоги
Введение в программирование трехмерных игр с DX9
Глава СмешиваниеФормулы смешивания
Непрозрачный чайник
Прозрачный чайник
Коэффициеты смешивания
Прозрачность
Альфа-канал
Разрядная карта оттенков серого, представляющая альфа-канал текстуры
Текстурированный квадрат, у которого альфа-канал задает прозрачность отдельных частей
Указание источника альфа-компоненты
Создание альфа-канала с помощью утилиты DirectX Texture Tool
Изменение формата текстуры
Полученная текстура с альфа-каналом
Пример приложения: прозрачный чайник
Итоги
Введение в программирование трехмерных игр с DX9
Глава ТрафаретыНа рисунке сверху изображено отражение
Использование буфера трафарета
Создание буфера трафарета
Проверка трафарета
Управление проверкой трафарета
Эталонное значение трафарета
Маска трафарета
Значение трафарета
Операция сравнения
Обновление буфера трафарета
Маска записи трафарета
Пример приложения: зеркала
Математика отражений
Отражение относительно
Обзор реализации отражений
Сцена, визуализированная
Визуализация зеркала в
Код и комментарии
Часть I
Часть II
Часть III
Часть IV
Часть V
Пример приложения: плоская тень
Окно рассматриваемого в этом разделе
Tень, отбрасываемая объектом при его освещении параллельным источником света
Матрица тени
Использование буфера трафарета для предотвращения двойного смешивания
Обратите внимание на темные области
Итоги
Введение в программирование трехмерных игр с DX9
Глава Шрифты
IDXFont
Создание IDXFont
Рисование текста
Вычисление частоты кадров
CDFont
Создание экземпляра CDFont
Рисование текста
Очистка
DXCreateText
Трехмерный текст, созданный функцией DXCreateText
Итоги
Введение в программирование трехмерных игр с DX9
Глава Сетки: часть IГеометрия сетки
Подгруппы и буфер атрибутов
Дом, разбитый на несколько подгрупп
Соответствие между треугольниками
Рисование
Оптимизация
Таблица атрибутов
Данные геометрии и содержимое
Данные о смежности
Каждому треугольнику соответствуют
Клонирование
Создание сетки (DXCreateMeshFVF)
Пример приложения: создание и визуализация сетки
Куб, созданный и визуализированный как объект IDXMesh
Итоги
Введение в программирование трехмерных игр с DX9
Глава Построение гибкого класса камеры
Проектирование класса камеры
Векторы камеры определяют ее ориентацию и местоположение в мировой системе координат
Вычисление матрицы вида
Преобразование из мирового пространства
Часть Перемещение
Вращение относительно произвольной оси
Вращение относительно произвольной оси, определенной вектором A
Наклон, рыскание и вращение
Наклон, или поворот относительно правого вектора камеры
Рыскание, или поворот относительно верхнего вектора камеры
Вращение, или поворот относительно вектора взгляда камеры
Ходьба, сдвиг и полет
Перемещение вдоль векторов ориентации камеры
Пример приложения: камера
Окно программы, рассматриваемой в этой главе
Окно программы, рассматриваемой в этой главе - 2
Итоги
Введение в программирование трехмерных игр с DX9
Глава Сетки: часть IIIDXBuffer
X-файлы
Загрузка X-файлов
Материалы в X-файле
Пример приложения: загрузка X-файла
Окно программы XFile
Генерация нормалей вершин
Прогрессивные сетки
Изображение сетки с тремя различными уровнями детализации
Создание прогессивной сетки
Веса атрибутов вершин
Методы IDXPMesh
Пример приложения: прогрессивная сетка
Ограничивающие объемы
Сетка визуализированная с ограничивающей
Новые константы
Типы ограничивающих объемов
Пример приложения: ограничивающие объемы
Окно программы Bounding Volumes
Итоги
Введение в программирование трехмерных игр с DX9
Глава Основы визуализации ландшафтов
(A) Сетка с треугольными ячейками
Карты высот
Создание карты высот
Карта градаций серого, созднная в Adobe Photoshop
Загрузка файла RAW
Досуп к карте высот и ее модификация
Свойства размеченной треугольной сетки Точки на пересечении линий сетки обозначают вершины
Вычисление вершин
Соответствие между вершинами ландшафта и координатами текстур
Вычисление индексов определение треугольников
Вершины квадрата
Текстурирование
Процедурный подход
Освещение
Обзор
Угол между вектором освещения
Вычисление затенения квадрата
Вычисление двух векторов, находящихся в одной плоскости с квадратом
Затенение ландшафта
Ходьба по ландшафту
Исходная сетка ландшафта и сетка
Высота ячейки (координата Y) для заданных координат местоположения камеры X и Z
Ячейка до и после преобразования, переносящего ее верхнюю левую вершину в начало координат
(А) Вычисляем два вектора, совпадающих
Пример приложения: ландшафт
Возможные усовершенствования
Итоги
Введение в программирование трехмерных игр с DX9
Глава Системы частиц
Частицы и точечные спрайты
Формат структуры
Режимы визуализации точечных спрайтов
Частицы и их атрибуты
Компоненты системы частиц
Рисование системы частиц
Разделенный на сегменты буфер вершин
Хаотичность
Примеры систем частиц: снег, фейерверк, след снаряда
Окно программы Snow
Окно программы Firework
Окно программы Laser (Particle Gun)
Итоги
Введение в программирование трехмерных игр с DX9
Глава Выбор объектовПользователь выбирает чайник
Луч, проходящий через точку p
Преобразование из экранного пространства в окно проекции
Вычисление луча выбора
Преобразование лучей
Пересечение луча и объекта
Длина вектора p c, обозначаемая
A) Луч проходит мимо сферы; и
Окно примера к данной главе
Итоги
Введение в программирование трехмерных игр с DX9
Глава Введение в высокоуровневый язык шейдеровПишем шейдер на HLSL
Глобальные переменные
Входная и выходная структуры
Точка входа
Таблица констант
Получение дескриптора константы
Установка констант
Установка значений по умолчанию для констант
Компиляция HLSL-шейдера
Типы переменных
Скалярные типы
Векторные типы
Матричные типы
Массивы
Структуры
Ключевое слово typedef
Префиксы переменных
Ключевые слова
Поток выполнения программы
Приведение типов
Операторы
Определяемые пользователем функции
Встроенные функции
Итоги
Введение в программирование трехмерных игр с DX9
Глава Знакомство с вершинными шейдерамиВершинный шейдер заменяет этапы преобразования и освещения в фиксированном конвейере
Объявление вершин
Описание объявления вершин
Создание объявления вершин
Разрешение использования объявлений вершин
Использование данных вершин
Этапы работы с вершинным шейдером
Написание и компиляция вершинного шейдера
Создание вершинного шейдера
Установка вершинного шейдера
Уничтожение вершинного шейдера
Пример приложения: рассеянный свет
Пример приложения: мультипликационная визуализация
(А) Объекты с затенением выполненным
Мультипликационное затенение
Текстура затенения содержит используемые
Используемый оттенок зависит от интервала, в который попадает координата текстуры
Код вершинного шейдера для мультипликационного затенения
Обводка силуэта
Представление краев
Квадрат, представляющий край
Вырожденный квадрат, описывающий край, разделенный на два треугольника
Вершины vи vкрая силуэта смещаются
Проверка для краев силуэта
На Рисунок (a) одна из граней
Край, определенный вершинами vи vиспользуется только одной гранью
Генерация краев
Код вершинного шейдера обводки силуэта
Итоги
Введение в программирование трехмерных игр с DX9
Глава Знакомство с пиксельными шейдерамиОсновы мультитекстурирования
Визуализация освещенного прожектором
Разрешение работы с несколькими текстурами
Координаты для нескольких текстур
Входные и выходные данные пиксельного шейдера
Этапы работы с пиксельным шейдером
Написание и компиляция пиксельного шейдера
Создание пиксельного шейдера
Установка пиксельного шейдера
Уничтожение пиксельного шейдера
Объекты выборки в HLSL
Пример приложения: мультитекстурирование в пиксельном шейдере
Комбинирование текстур Пусть b
Итоги
Введение в программирование трехмерных игр с DX9
Глава Каркас эффектовТехники и проходы
Встроенные объекты HLSL
Объекты текстуры
Объекты выборки и режимы выборки
Объекты вершинных и пиксельных шейдеров
Строки
Аннотации
Состояния устройства в файле эффекта
Создание эффекта
Установка констант
Использование эффекта
Получение дескриптора эффекта
Активация эффекта
Начало эффекта
Установка текущего прохода визуализации
Завершение эффекта
Пример
Пример приложения: освещение и текстурирование в файле эффектов
Окно приложения Lighting and Texturing Текстуры, материал и режимы освещения заданы в файле эффекта
Пример приложения: туман
Окно программы Fog Effect В этом
Пример приложения: мультипликационный эффект
EffectEdit
Окно программы EffectEdit, поставляемой вместе с DirectX SDK
Итоги
Введение в программирование трехмерных игр с DX9
Часть IМатематическая подготовкаВекторы в трехмерном пространстве
Свободные векторы, определенные независимо от системы координат
Слева изображена левосторонняя
Векторы в стандартной
Нулевой вектор и базовые орты трехмерной системы координат
Равенство векторов
Вычисление модуля вектора
Нормализация вектора
Сложение векторов
Сложение векторов Обратите
Вычитание векторов
Вычитание векторов
Умножение вектора на скаляр
Скалярное произведение векторов
Векторное произведение
Векторное произведение Вектор p = u v перпендикулярен как вектору u, так и вектору v
Решение
Матрицы
Равенство, умножение матрицы на скаляр и сложение матриц
Умножение
Единичная матрица
Инвертирование матриц
Транспонирование матриц
Матрицы в библиотеке DX
Основные преобразования
Перемещение на единиц по оси X и на единиц по оси Y
Поворот на градусов против часовой стрелки вокруг оси Z
Масштабирование с коэффициентом по оси X и коэффициентом по оси Y
Комбинирование преобразований
Некоторые функции для преобразования векторов
Плоскости
Плоскость, заданная вектором нормали n и точкой плоскости p0
Если точка pпринадлежит
DXPLANE
Взаимное расположение точки и плоскости
Создание плоскостей
Нормализация плоскости
Преобразование плоскости
Точка плоскости, ближайшая к заданной
Точка q плоскости (, d)
Лучи
Лучи
Луч, заданный начальной
Пересечение луча и плоскости
Итоги
Часть IIОсновы Direct
Часть IIIПрименение Direct
Часть IVШейдеры и эффекты
Введение в программирование трехмерных игр с DX9
Приложение Введение в программирование для WindowsОбзор
Ресурсы
События, сообщения, очередь сообщений и цикл обработки сообщений
Управляемая событиями модель программирования
GUI
Графический интерфейс
Windows-приложение Hello World
Окно приведенной выше
Исследование программы Hello World
Включение файлов, глобальные переменные и прототипы
WinMain
WNDCLASS и регистрация
Создание и отображение окна
Экранное пространство
Цикл сообщений
Оконная процедура
Функция MessageBox
Улучшенный цикл сообщений
Итоги
далее
далее
Содержание раздела