Программирование графики с использованием Direct3D

       

Программирование графики с использованием Direct3D

Благодарности
Приложение. Работа с демонстрационными программами
Установка приложений
Структура каталогов

Код приложений
Файлы CPP и H
Файлы MDP
MAK
CLW
Файлы RC
Файлы X, BMP и PPM
Модификация демонстрационных программ
Дополнительные утилиты


Texture Magic

DS2POV
Несколько слов о Visual C++ 4.2
Book_left
Алфавитный указатель
Глава 1. Краткий обзор Visual C++
Студия Разработчика
Windows SDK против MFC
Программирование, управляемое событиями
Функция WinMain
Обработчики событий

Карты сообщений
Мастер создания классов ClassWizard
Мастер создания приложений AppWizard
Создание MFC приложения
Добавление обработчика событий
Мастер создания приложений Direct3D AppWizard
Программирование для Windows и некоторые соглашения
Глава 2. Введение в трехмерную графику

Трехмерные системы координат
Начало системы координат
Векторы
Плоскости
Вершины
Грани
Сетки
Нормали
Преобразования
Перемещение

Масштабирование
Масштабирование - 2
Вращение
Наложение текстур
Природа текстуры
Масштабирование текстуры
Способы наложения текстуры
Анимация текстуры
Освещение
Цвет источника света

Типы источников света
Рассеянный свет
Точечное освещение
Источник направленного света
Источник зонального света
Перспективное преобразование
От трех измерений к двум
Техника удаления невидимых поверхностей
Z-буферизация
Z-буферизация: За и Против

Методы визуализации
Каркасный метод
Неосвещенный метод
Равномерная закраска
Метод Гуро
Метод Фонга
Трассировка лучей
Анимация
Параметры движения
Ключевые кадры

Заключение
Глава 3. Знакомство с Direct3D
Direct3D
COM
Direct3DRM: основной интерфейс
Создание объектов Direct3D
Изменение пути поиска файлов
Управление скоростью обновления
Direct3DRMDevice: интерфейс устройства

Цветовые модели
Параметры визуализации
Direct3DWinDevice: интерфейс устройства Windows
Direct3DRMViewport: интерфейс порта просмотра
Поле зрения
Отсечение
Direct3DRMFrame: интерфейс фрейма
Иерархия фреймов
Позиционирование фреймов
Перемещение фреймов

Перемещение и функции обратного вызова
Direct3DRMMeshBuilder: интерфейс конструктора сеток
Загрузка и сохранение
Доступ к граням
Доступ к вершинам
Перемещение и масштабирование
Производительность
Direct3DRMMesh: интерфейс сетки
Группы граней в сетке

Создание сеток посредством конструктора сеток
Direct3DRMFace: интерфейс грани
Текстуры граней
Материалы грани
Вершины грани
Direct3DRMTexture: интерфейс текстуры
Создание текстур
Цвета текстуры
Декалы

Direct3DRMTextureWrap: интерфейс наложения текстур
Direct3DRMMaterial: интерфейс материала
Мощность отраженного света
Цвет отраженного света
Цвет испускаемого света
Direct3DRMLight: интерфейс источника света
Рассеяный свет
Точечный источник света
Направленный свет
Параллельный свет

Зональное освещение
Direct3DRMShadow: интерфейс тени
Direct3DRMAnimation: интерфейс анимации
Создание ключей
Установка времени в анимации
Параметры анимации
Direct3DRMAnimationSet: интерфейс анимационного набора
Загрузка анимационных наборов
Установка времени в анимационных наборах
Типы данных Direct3D

D3DVALUE
D3DVECTOR
D3DCOLOR
D3DRMBOX
D3DRMVERTEX
D3DRMQUATERNION
HRESULT
X-файлы
Conv3ds

Глава 4. Код
Мастер Direct3D AppWizard
Программа Sample
Зависимости COM-интерфейсов Direct3D
Дерево зависимостей
Создание собственного дерева зависимостей
Последовательность событий
Разработка классов
Разделение труда
Инициализация Direct3D

Функция InitInstance()
Функция OnCreate()
Функция CreateDevice()

Программирование графики с использованием Direct3D

Функция GetGUID()
Конструирование сцен
Функция CreateScene()
Создание сетки
Создание источника света

Создание порта просмотра
Управление сценой
Функция OnIdle()
Функция OnActivate()
Функция OnPaint()
Функция OnSize()
Функция OnEraseBkgnd()
Использование функций обратного вызова
Завершение работы

Функция OnDestroy()
Вспомогательные функции
Функция ScaleMesh()
Функция GetMouse()
Преобразования типов COLORREF и D3DCOLOR
Обучайтесь экспериментируя
Глава 5. Наложение текстур
Наглядный пример наложения текстур
Наложение текстуры на сетку
Демонстрационное приложение Jade

Класс JadeWin
Функция JadeWin::CreateScene()
Функция JadeWin::MoveFrame()
Функции меню Render приложения JadeWin

Методы наложения текстуры
Приложение Wraps
Класс WrapsWin
Функция WrapsWin::CreateScene()
Функция WrapsWin::LoadMeshes()
Функция WrapsWin::LoadWrapsTexture()
Функция WrapsWin::OnWrapsReset()
Функция WrapsWin::ApplyWraps()

Приложение Decal
Класс DecalWin
Функция DecalWin::CreateScene()
Прозрачность
Приложение OrbStar
Класс OrbStarWin
Функция OrbStarWin::CreateScene()

Функции обратного вызова в приложении OrbStar
Приложение TextureDrift
Класс TextureDriftWin
Функция TextureDriftWin::CreateScene()
Функция TextureDriftWin::MoveTexture()

Приложение ShowRoom
Класс ShowRoomWin
Функция ShowRoom::CreateScene()
Функция ShowRoom::UpdateTexture()
Глава 6. Источники света и тени
Методы визуализации и цветовые модели

Демонстрация рассеянного света
Класс AmbientLightWin
Функция AmbientLightWin::CreateScene()
Функции меню Render
Точечный свет
Приложение Firefly

Класс FireflyWin
Функция FireflyWin::CreateScene()
Приложение SpaceStation
Класс SpaceStationWin
Функция SpaceStationWin::CreateScene()

Параллельно-точечный свет
Приложение SpaceDonut
Класс SpaceDonutWin
Функция SpaceDonutWin::CreateScene()

Прожектор
Приложение Spotlight
Класс SpotlightWin
Функция SpotlightWin::CreateScene()
Функция SpotlightWin::MoveLight()
Функции меню Render приложения Spotlight

Функции меню Beam приложения Spotlight
Работа с несколькими источниками света
Тени
Приложение Shadow
Класс ShadowWin
Функция ShadowWin::CreateScene()

Функция ShadowWin::AdjustSpin()
Функции меню Render приложения Shadow
Глава 7. Фреймы и анимация
Иерархии фреймов
Приложение Molecule
Класс MoleculeWin
Функция MoleculeWin::CreateScene()
Функция MoleculeWin::CreateHierarchy()

Функция MoleculeWin::CreateChildren()
Функции управления глубиной иерархии
Управление количеством дочерних фреймов
Приложение Rocket
Класс RocketWin
Функция RocketWin::CreateScene()

Функция RocketWin::UpdateScene()
Функции меню Animation в классе RocketWin
Функции управления скоростью анимации
Еще об анимации
Приложение Target
Класс TargetWin
Функция TargetWin::CreateScene()

Программирование графики с использованием Direct3D

Функция TargetWin::MoveTarget()
Функция TargetWin::OrientFrame()
Глава 8. Снова о сетках
Анимация вершин
Приложение Cube
Класс CubeWin
Функция CubeWin::CreateScene()

Функция CubeWin::UpdateCube()
Функции меню Render в классе CubeWin
Группы граней сетки

Класс Cube2Win
Функция Cube2Win::CreateScene()
Функция Cube2Win::UpdateCube()
Функция Cube2Win::UpdateColors()
Функции меню Render в классе Cube2Win
Трансформация
Приложение MorphPlay

Структура классов
Класс MorphWin
Функция MorphWin::LoadMorphSequence()
Функция MorphWin::LoadMeshes()
Функция MorphWin::CreateAnimations()
Функция MorphWin::PrepareMorphVertices()
Функция MorphWin::GetNumMorphTargets()
Функция MorphWin::AddMorphKey()
Функция MorphWin::SetMorphTime()

Функция MorphWin::GetMorphMesh()
Класс MorphPlayWin
Функция MorphPlayWin::CreateScene()
Функция MorphPlayWin::OnFileOpen()
Функция MorphPlayWin::InitMorphSequence()
Функция MorphPlayWin::UpdateMorph()
Функции класса MorphPlayWin для работы с мышью
Глава 9. Порты просмотра

Приложение Zoom
Класс ZoomWin
Функция ZoomWin::CreateScene()
Функция ZoomWin::AdjustField()
Функции меню Animation в классе ZoomWin

Выбор объектов
Приложение MeshPick
Класс MeshPickWin
Функция MeshPickWin::CreateScene()
Функции класса MeshPickWin для работы с мышью
Функция MeshPickWin::PickMesh()
Функция MeshPickWin::UpdateDrag()
Выбор граней

Приложение FacePick
Класс FacePickWin
Функция FacePickWin::CreateScene()
Функции класса FacePickWin для работы с мышью
Функция FacePickWin::PickFace()
Функция FacePickWin::UpdateDrag()
Функции меню Color в классе FacePickWin
Функции меню File в классе FacePickWin

Использование нескольких портов просмотра
Приложение MultiView
Код приложения MultiView
Класс MultiViewWin
Функция MultiViewWin::CreateScene()
Изменения в классе RMWin
Функция RMWin::CreateDevice()

Функция RMWin::ConfigViewport()
Функция RMWin::CreateViewports()
Функция RMWin::Render()
Функция RMWin::OnSize()
Функции меню Viewport в классе RMWin
Глава 10. Полноэкранные приложения
DirectDraw
Интерфейс DirectDraw

Уровни кооперации
Видеорежимы
Переключение страниц
Поверхности
Z-буфферизация
Палитры
Модификация класса RMWin
Класс RMWin
Удаление ненужных функций
Добавление поддержки видеорежимов

Функции работы с поверхностями
Поддержка палитры
Функция InitDisplayMode()
Функция InitMainSurfaces()
Функции работы с палитрой

Функция ActivateDisplayMode()
Функция GetNumDisplayModes()
Функция GetCurDisplayMode()
Функция GetDisplayModeDims()
Функция GetCurDisplayModeDims()

Функция CreateSurface()
Функция ClearSurface()
Функция Render()
Приложение FullScreen
Класс FullScreenWin
Функция FullScreenWin()
Функция CreateMenuSurface()

Функция UpdateMenuSurface()
Функция CreateFPSSurface()
Функция UpdateFPSSurface()
Функция KeyDown()
Cover

Введение
Надвигающаяся трехмерная революция
Что такое Direct3D?
Требования к читателю
Требования к программному обеспечению
Требования к аппаратному обеспечению
Организация книги
Получение помощи