Графика для Windows средствами DirectDraw

Графика для Windows средствами DirectDraw

Глава 1. Краткий курс DirectDraw
Что такое DirectDraw?
Термины и концепции

Видеорежимы
Аппаратное ускорение
Поверхности
Блиттинг
Палитры
Отсечение
Другие типы поверхностей


Спецификация COM фирмы Microsoft
Объекты и интерфейсы
GUID

DirectDraw API
Интерфейсы DirectDraw и DirectDraw2
Функции создания интерфейсов
Функция GetCaps()
Функция SetCooperativeLevel()
Функции для работы с видеорежимами
Функции для работы с поверхностями
Функции для работы с частотой смены кадров
Функция GetFourCCCodes()
Интерфейсы DirectDrawSurface

Функции описания поверхностей
Функции блиттинга
Функция Flip()
Функции определения состояния поверхностей
Функции для работы с цветовыми ключами
Функции Lock() и Unlock()
Функции GetDC() и ReleaseDC()
Функции PageLock() и PageUnlock()
Функции IsLost() и Restore()
Функция GetDDInterface()

Функции присоединения поверхностей
Оверлейные функции
Функции для работы с объектами отсечения
Функции палитры
Интерфейс DirectDrawPalette
Интерфейс DirectDrawClipper
Дополнительные интерфейсы DirectDraw
Структуры DirectDraw
Создание приложений DirectDraw
Оконные приложения

Полноэкранные приложения
Комбинированные приложения
Подготовка инструментов
Runtime-файлы DirectX
DirectX SDK
Visual C++
Windows NT и Windows 95
Заключение
Глава 2. Проблемы быстродействия

Традиционная оптимизация
Действительно ли C++ медленнее C?
Не бойтесь плавающей точки
Аппаратная часть быстрее программной
Нехватка видеопамяти
FPS - еще не все
Полезные хлопоты с палитрами
Долой аппаратную зависимость!
Перестановка кресел на «Титанике»
Будущее DirectX

Глава 3. За кулисами DirectDraw
DirectDraw AppWizard
Создание приложения Bounce
Структура приложения
Назначение классов
Специализированные классы

Инициализация
Инициализация DirectDraw
Получение списка драйверов DirectDraw
Выбор драйвера
Обнаружение видеорежимов
Выбор видеорежима
Активизация видеорежима
Создание поверхностей

Подготовка поверхностей
Графический вывод
Функция DrawScene()
Функция BltSurface()

Восстановление поверхностей
Завершение

Глава 4. Видеорежимы и частота смены кадров
Переключение видеорежимов
Функция SetDisplayMode()
Обнаружение видеорежимов и частот смены кадров
Функция ActivateDisplayMode()
Программа Switch
Вывод текста
Вычисление FPS
Класс SwitchWin

Инициализация приложения

Обработка пользовательского ввода
Частота смены кадров
Программа SuperSwitch
Класс SuperSwitchWin
Глава 5. Поверхности и форматы пикселей
Глубина пикселей
Шаг поверхности
Форматы пикселей

Получение данных о формате пикселей
Переменные формата пикселей в классе DirectDrawWin
Блокировка поверхностей
BMP-файлы
Формат BMP-файлов
Структура заголовка
Палитра

Графические данные
Организация доступа к поверхностям
Функция CreateSurface()
Функция CreatePalette()
Передача графических данных

Графика для Windows средствами DirectDraw

Битные поверхности
Битные поверхности
Битные поверхности
Битные поверхности
Программа BmpView

Прокрутка больших поверхностей
Проблемы с диалоговыми окнами
Определение класса
Выбор и отображение BMP-файла

Глава 6. DirectInput
Что такое DirectInput?
Поддерживаемые устройства
Быстродействие
Схемы получения данных
Опросы и оповещения
Уровни кооперации

Данные об осевых смещениях
Захват устройств
DirectInput API
Интерфейс DirectInput
Интерфейс DirectInputDevice
Программа Qwerty
Класс QwertyWin

Инициализация DirectInput
Захват клавиатуры
Определение состояния клавиш
Завершение приложения
Управление версией DirectInput
Программа Smear

Класс SmearWin
Инициализация мыши
Инициализация клавиатуры
Захват мыши и клавиатуры
Получение данных от мыши
Заключение

Глава 7. Проблема курсора
Частичное обновление экрана
Обновление курсора
Переключение страниц
Многопоточность
Потоки и процессы
Зачем нужна многопоточность?
Синхронизация потоков

Классы потоков в MFC
Решение проблемы курсора
Основной поток
Поток ввода
Что делать с кнопками мыши?
Программа Cursor
Класс CursorWin

Глава 8. Воспроизведение видеороликов
Начальные сведения
AVI-файлы
Представление данных в видеофайлах
Video For Windows
VFW API
Программа AviPlay
Класс AviPlayWin

Функция OnCreate()
Функция SelectInitialDisplayMode()
Функция ShowDialog()
Функция LoadAvi()
Функция CreateAviSurface()
Функция InstallPalette()

Функция UpdateAviSurface()
Функция RestoreSurfaces()
Обработка пользовательского ввода
Функция OnDestroy()
Глава 9. Проверка столкновений
Общее решение
Наглядное пояснение
Функции проверки столкновений

Класс Sprite

Программа Bumper
Класс BumperWin
Функция OnKeyDown()
Восстановление потерянных поверхностей
Предисловие
Введение

Для чего написана эта книга
Требования к читателю
Программные требования
Аппаратные требования
Приложение А. Информация для разработчиков
Отладка
Проблемы
Windows NT и Windows 95
Отладочные макросы

Удаленная отладка
Отладочные сообщения DirectX
Замечания о Visual C++

Прекомпилированные заголовки
Файлы DirectX SDK

Графика для Windows средствами DirectDraw

Фокусы ClassView
Работа с Visual C++ 4.0
Варианты VisualC++
Советы и рекомендации
Ошибка переключения режимов DirectDraw
Символическая константа INITGUID (устаревшая)
Эмуляция версий

Где достать DirectX SDK
Аннотация