Краткое описание по работе с Direct Draw

Краткое описание по работе с DirectDraw


В этом разделе будет дан общий обзор DirectDraw, а также общие концепции.

1. DirectX API

Microsoft's DirectX API состоит из следующих групп:

·         DirectDraw - прямой доступ к видеопамяти

·         DirectSound - прямой доступ к звуковой карте

·         DirectPlay - прямой доступ к сетевым возможностям для обеспечения multiplayer mode

·         DirectInput - поддержка игровых устройств ввода

Все это предназначено для того, чтобы дать возможность программисту получить прямой доступ к различному (в основном игровому) железу. В данной статье дается пояснения к использованию интерфейса DirectDraw.

2. Что такое DirectDraw

DirectDraw

это обычный менеджер видеопамяти. Его основное назначение предоставить программисту прямой доступ к видеопамяти. Осуществлять такие операции, как копирование видео память -> видеопамять и т.п.. При этом напрямую могут использоваться возможности видеоконтроллера и освобождать от этих операций центральный процессор. Кроме того, DirectDraw напрямую использует и другие возможности Вашей виде окарты, как то спрайты, z - буферизацию и т.п.. Начиная с 5 версии DirectX дополнительно используются (во всяком случае декларируется использование) возможностей ММX - что позволяет за один цикл обрабатывать и передавать 64 бита видеоинформации.

3. Взаимоотношение с WinG

В основном идея DirectDraw взята с WinG. Отличие состоит в том, что в основу идеологии WinG положено копирование изображений из обычной памяти в видеопамять, в то время как основной идеей DirectDraw является копирование видеопамяти в видеопамять, хотя также может поддерживаться и режим память->видеопамять. Что, конечно, является необходимым в мире видео карт с 1 метром видеопамяти.

4. Поверхности DirectDraw - вид доступа к видеопамяти

Вашей основной задачей, как программиста, поместить в видеопамять столько изображений, необходимых для выполнения Вашей программы, как только возможно. Благо при использовании DirectDraw вся видеопамять доступна для Вас. Вы можете использовать ее для запоминания различных изображений (bitmap) , спрайтов и тп. Все эти видео элементы в терминологии DirectDraw называются поверхностями (surfaces). Основная последовательность при загрузке изображений следующая - Вы создаете поверхность(просто область видеопамяти (или системной памяти - если ресурсы видеопамяти исчерпаны)) , и загружаете в нее необходимое изображение.


DirectDraw

обеспечен функциями определения доступной видео памяти - таким образом Вы можете оптимизировать ее использование для конкретной видео карты. Минимальным для нормального использования DirectDraw представляется использование 2 M видео карт, хотя это субъективное мнение

5. От смены страниц (flipping) к анимации

Стандартным методом организации анимации является перенос видеобуферов изображения из видеопамяти в за экранную поверхность (offscreen buffer) с последующим переключением экранной и за экранной поверхности (flipping) которое выполняется простой функцией Flip(). При этом тот видеобуфер который был экранной поверхностью - становится за экранной поверхностью и наоборот .

Частота смены буферов может быть достаточно высокой и ограничена частотой кадровой развертки монитора (60 - 100 Гц). Поддержка DirectDraw

вертикальной развертки приводит к более гладкой смене кадров.

Интерфейсы DirectDraw и COM

Все DirectX объекты являются порождениями от COM объектов.

При этом Вы можете, как использовать напрямую возможности COM , так и вообще не знать о них. Весь минимально необходимый интерфейс к COM скрыт (уже поддерживается) объектами DirectX.

 


Содержание раздела