DirectX 9 с управляемым кодом. Программирование игр и графика (+CD)

Т. Миллер

Оглавление
Предисловие 14
Об авторе 15
Посвящается 16
Участники работы 16
Будем признательны за ваши отзывы и пожелания! 17
Введение 18
История Управляемого DirectX 18
Включенные пространства имен 20
Выбор программы 21
ЧАСТЬ I. ВВЕДЕНИЕ В КОМПЬЮТЕРНУЮ ГРАФИКУ 23
Глава 1. Введение в Direct3D 24
Начало работы 24
Устройство Direct3D 25
Создание трехмерного треугольника 32
Автоматический сброс устройства во время изменения размеров окна 40
Создание освещения 41
Состояния устройства и преобразования 44
Свопинг-связки и рендеры 44
Краткие выводы 46
Глава 2. Выбор подходящего устройства 48
Адаптеры системы 48
Поддержка аппаратного устройства 53
Проверка возможностей устройства 54
Краткие выводы 56
Глава 3. Введение в технологию рендеринга 57
Использование вершинных буферов 57
Текстурирование объектов 68
Краткие выводы 74
Глава 4. Более совершенные технологии рендеринга 76
Рендеринг с использованием примитивов различного типа 76
Использование индексных буферов 82
Использование буферов глубины или Z-буферов 87
Краткие выводы 90
Глава 5. Рендеринг "Mesh"-объектов 91
Определение Mesh-объектов 91
Использование материалов и освещения 94
Использование Mesh-объектов для рендеринга сложных моделей 98
Краткие выводы 105
Глава 6. Использование Управляемого DirectX для программирования игр 106
Выбор игры 106
Программирование игры 107
Добавление движущегося автомобиля в используемую сцену 118
Добавление препятствий 124
Последние штрихи 135
Краткие выводы 142
ЧАСТЬ II. ОСНОВНЫЕ КОНЦЕПЦИИ ПОСТРОЕНИЯ ГРАФИКИ 143
Глава 7. Использование дополнительных свойств и возможностей Mesh-объектов 144
Создание копий Mesh-объектов 144
Оптимизация данных Mesh-объекта 146
Упрощение существующих Mesh-объектов 149
Объединение вершин в Mesh-объектах 156
Создание нескольких объектов из одного 158
Краткие выводы 161
Глава 8. Введение в ресурсы 162
Класс ресурсов 162
Использование вершинных и индексных буферов 163
Механизм Locking, блокировка используемых буферов 164
Управление процедурой блокировки 167
Использование текстурных ресурсов 169
Блокировка текстур и получение описаний 171
Краткие выводы 176
Глава 9. Применение других типов Mesh 177
Упрощение Mesh-объектов 177
Управление степенью детализации, класс прогрессивных Meshes-объектов 181
Рендеринг патч-объектов. Тесселяция объектов 185
Примеры тесселированных объектов 190
Краткие выводы 192
Глава 10. Использование вспомогательных классов 193
Рисование линий 193
Отображение текста 196
Рендеринг на поверхности 201
Рендеринг текстур Environment Maps 205
Краткие выводы 214
ЧАСТЬ III. БОЛЕЕ СОВЕРШЕННЫЕ МЕТОДЫ ПОСТРОЕНИЯ ГРАФИКИ 215
Глава 11. Введение в программируемый конвейер, язык шейдеров 216
Рендеринг треугольника с использованием программируемого конвейера 216
Использование шейдеров для рендеринга, использование техник "TECHNIQUE" 225
Использование программируемого конвейера для рендеринга mesh-объектов 228
Использолвание языка HLSL для создания пиксельного шейдера 230
Краткие выводы 236
Глава 12. Использование языка шейдеров HLSL 237
Использование простых формул для моделирования анимации 237
Объединение цветов текстуры с цветами поверхности 239
Текстуры освещения 244
Моделирование световых бликов 247
Краткие выводы 256
Глава 13. Рендеринг скелетной анимации 257
Создание иерархической системы фреймов 257
Загрузка объектов с анимацией 262
Рендеринг анимированных объектов 267
Краткие выводы 274
ЧАСТЬ IV. ЗВУК И УСТРОЙСТВА ВВОДА 275
Глава 14. Добавление звука 276
Включение пространства имен SOUND 276
Загрузка и проигрывание статических звуков 276
Использование 3D-звука 281
Управление слушателем 285
Использование звуковых эффектов 287
Краткие выводы 290
Глава 15. Управление устройствами ввода 291
Обнаружение устройств 291
Использование клавиатуры 294
Использование устройства мыши 299
Использование игровых клавиатур и джойстиков 301
Устройства обратной связи 303
Краткие выводы 306
ЧАСТЬ V. 2D ГРАФИКА 307
Глава 16. Приложение Direct3D для 2D-графики 308
Создание полноэкранного устройства отображения 308
Рендеринг спрайтов 310
Анимация спрайтов 315
Краткие выводы 319
Глава 17. Использование DirectDraw для рендеринга 2D-графики 320
Создание полноэкранного устройства DirectDraw 320
Анимация спрайтов 327
Краткие выводы 330
ЧАСТЬ VI. ДОБАВЛЕНИЕ СЕТЕВЫХ ВОЗМОЖНОСТЕЙ 331
Глава 18. Организация сети с равноправными узлами с помощью DirectPlay 332
Адреса DirectPlay 332
Создание P2P-соединения 334
Начало сеанса 337
Использование модели событий 341
Работа в сети 344
Обработка потерянных сессий 347
Краткие выводы 349
Глава 19. Создание сессии Client/Server 350
Создание выделенного сервера 350
Создание соединения клиент-сервер 353
Отслеживание моментов присоединения и выхода из сети 357
Передача пакетов данных по сети 359
Формирование отклика клиента 363
Обработка отключения сервера 365
Краткие выводы 365
Глава 20. Особенности более совершенного использования сетей 366
Модели событий и обработчики 366
Определение пропускной способности и статистики сети 368
Запуск приложений, использующих концепцию "Lobby" 371
Создание лобби-приложения 374
Добавление голосового чата 374
Краткие выводы 378
Глава 21. Методы достижения максимального
быстродействия 379
Преобразование типов в объекты 379
Побочные эффекты моделей событий 380
Эффективность методов 383
Краткие выводы 384
ЧАСТЬ VII. ПРИЛОЖЕНИЯ 385
Приложение A. Использование сборок диагностики 386
Перечисление всех опций в системе 386
Проверка отдельных пунктов 388
Приложение B. Воспроизведение музыки и видео 389
Воспроизведение звукового файла 389
Воспроизведение видео файла в отдельном окне 390
Использование видео файла в качестве текстуры 390
АЛФАВИТНЫЙ УКАЗАТЕЛЬ 393