
Рассмотрено программирование графических эффектов на языке С++ с использованием популярной библиотеки DirectX. На занимательных практических примерах показано, как создавать различные визуальные эффекты (реалистичный огонь, электрические разряды, зеркала и др.), используемые при разработке демонстрационных роликов (Demoscene). Пошагово описано применение основных методов и интерфейсов DirectX. Показано, как написать оптимальный и эффективный программный код. Большое внимание уделено технологии использования вершинных и пиксельных шейдеров для создания реалистичных изображений. Компактдиск, прилагаемый к книге, содержит листинги примеров из книги и дополнительную информацию по DirectX.
ЗАКАЗАТЬ КНИГУ СОДЕРЖАНИЕ ВВЕДЕНИЕ СОДЕРЖИМОЕ ДИСКА
| Оглавление Предисловие | 7 |
| О чем эта книга | 7 |
| Благодарности | 9 |
Глава 1. Введение в Demo и DirectX | 11 |
| 1.1. История демо-сцены | 11 |
| 1.2. Введение в DirectX | 17 |
| 1.3. Установка и настройка DirectX | 19 |
| 1.4. Введение в оптимизацию | 22 |
| ЗАКОН № 1 | 23 |
| ЗАКОН № 2 | 24 |
| ЗАКОН № 3 | 25 |
| ЗАКОН № 4 | 26 |
| ЗАКОН № 5 | 26 |
| ЗАКОН № 6 | 28 |
| ЗАКОН № 7 | 28 |
| ЗАКОН № 8 | 29 |
| ЗАКОН № 9 | 29 |
| 1.5. Инициализация Direct3D | 31 |
| 1.6. Инициализация DirectDraw | 47 |
| 1.7. Освобождение ресурсов | 56 |
Глава 2. Основные функции DirectX | 57 |
| 2.1. Загрузка картинки в DirectDraw | 57 |
| 2.2. Отображение картинок в DirectDraw | 61 |
| 2.2.1. Метод Blt | 62 |
| 2.2.2. Метод BltFast | 62 |
| 2.2.3. Переключение поверхностей | 63 |
| 2.2.4. Примеры копирования поверхностей | 64 |
| 2.2.5. Использование метода Blt для очистки поверхности | 65 |
| 2.2.6. Прозрачное копирование | 67 |
| 2.3. Оконные приложения | 70 |
| 2.4. Контроль области отображения | 73 |
| 2.5. Прямой доступ к видеопамяти | 75 |
| 2.6. Формат пиксела | 81 |
| 2.7. Потеря поверхностей | 86 |
| 2.8. Определение поддерживаемых режимов | 90 |
| 2.9. Отображение в Direct3D | 97 |
| 2.10. Примитивы Direct3D | 100 |
| 2.10.1. Описание фигуры | 102 |
| 2.10.2. Буфер вершин | 104 |
| 2.10.3. Работа с буфером вершин | 105 |
| 2.10.4. Буфер индексов вершин | 106 |
| 2.10.5. Точка просмотра | 109 |
| 2.10.6. Отображение | 112 |
| 2.10.7. Вывод буфера вершин | 112 |
| 2.11. Mesh | 117 |
| 2.11.1. Загрузка X-файла | 118 |
| 2.11.2. Материалы и текстуры | 121 |
| 2.11.3. Точка осмотра сцены | 122 |
| 2.11.4. Освещение | 123 |
| 2.11.5. Отображение сетки | 124 |
| 2.12. Синхронизация | 126 |
| 2.12.1. Синхронизация задержками | 126 |
| 2.12.2. Синхронизация временем | 127 |
| 2.12.3. Пример синхронизации временем 2D-графики | 129 |
| 2.12.4. Пример синхронизации временем 3D-графики | 132 |
Глава 3. Оптимизация в DirectX | 137 |
| 3.1. Оптимизация графики | 137 |
| 3.2. Быстрая закраска поверхности | 141 |
| 3.3. Рисование линий | 144 |
| 3.4. Быстрая загрузка картинок | 152 |
| 3.5. Ручной контроль области вывода | 157 |
| 3.6. Оптимизация прямого доступа | 165 |
| 3.7. Оптимизация 3D-графики | 167 |
| 3.8. Функции оптимизации 3D | 171 |
Глава 4. 2D-эффекты | 173 |
| 4.1. Обман зрения | 174 |
| 4.1.1. Градиент | 174 |
| 4.1.2. Мультипликация | 175 |
| 4.2. Линейные эффекты | 175 |
| 4.2.1. Сетка | 176 |
| 4.2.2. Спираль квадратов | 177 |
| 4.2.3. Прямоугольный туннель | 180 |
| 4.3. Нелинейная графика | 184 |
| 4.3.1. Фейерверк | 184 |
| 4.3.2. Кислота | 187 |
| 4.4. Эффекты с изображениями | 189 |
| 4.4.1. Прозрачность | 192 |
| 4.4.2. Линза | 194 |
| Квадратная линза | 195 |
| Круглая линза | 196 |
| Выпуклая линза | 198 |
| 4.5. Фракталы | 201 |
Глава 5. 3D-эффекты | 203 |
| 5.1. Альфа-смешивание | 203 |
| 5.2. Управление прозрачностью | 210 |
| 5.3. Экранные координаты | 211 |
| 5.4. Эффекты размытия | 214 |
| 5.5. Взрыв на макаронной фабрике | 219 |
| 5.6. Текстуры | 224 |
| 5.6.1. Простой пример работы с текстурами | 224 |
| 5.6.2. Взрыв на текстильной фабрике | 229 |
| 5.6.3. Прозрачность текстур | 233 |
| 5.6.4. Анимация прозрачности | 241 |
| 5.6.5. Анимация текстуры | 243 |
| 5.7. Добро пожаловать в истинное 3D-измерение | 247 |
| 5.8. Материалы и освещение | 250 |
| 5.8.1. Big sound | 251 |
| 5.8.2. Свечка | 254 |
| 5.9. Свечение | 259 |
| 5.9.1. Инициализация | 260 |
| 5.9.2. Отображение | 266 |
| 5.9.3. Настройки текстуры | 268 |
| 5.9.4. Завершающая стадия | 270 |
| 5.9.5. Точечные текстуры | 271 |
| 5.10. Отображение на текстуре | 274 |
| 5.10.1. Подготовка | 275 |
| 5.10.2. Инициализация | 276 |
| 5.10.3. Отображение текстуры с анимацией | 280 |
| 5.11. Не все золото, что блестит | 285 |
| 5.12. Эффекты | 293 |
| 5.13. Обман зрения | 296 |
| 5.14. Зеркало | 304 |
| 5.15. Продвинутое зеркало | 311 |
| 5.16. Введение в вершинный шейдер | 313 |
| 5.17. Простейший пример шейдеров | 316 |
| 5.17.1. Пишем шейдер | 317 |
| 5.17.2. Использование вершинного шейдера | 321 |
| 5.18. Управление освещением в шейдере | 328 |
| 5.18.1. Нормали | 328 |
| 5.18.2. Шейдер | 330 |
| 5.19. Невесомая капля | 332 |
| 5.20. Пиксельный шейдер | 337 |
| 5.21. Блики | 345 |
| 5.22. Сердечный приступ | 348 |
| 5.23. Огненный дракон | 352 |
| 5.23.1. Костер | 352 |
| 5.23.2. Ядро | 357 |
| 5.23.3. Огненная лава | 358 |
| 5.24. Морфинг | 359 |
| 5.25. Молния | 362 |
| 5.26. Кубические текстуры в шейдере | 363 |
| 5.27. Каждому объекту свой шейдер | 367 |
| Заключение | 375 |
| Приложение. Описание компакт-диска | 377 |
| Список литературы | 379 |
| Предметный указатель | 381 |
| 6 Оглавление 5 Оглавление |