Самое большое увеличение эффективности в DirectX 2 SDK происходит из-за DirectDraw, комбинации четырех моделей компонентных объектов (COM интерфейсов): IDirectDraw, IDirectDrawSurface, IDirectDrawPalette, и IDirectDrawClipper. Для большего количества информации относительно COM концепций см. Модель компонентных объектов
Объект DirectDraw, созданный использованием функции DirectDrawCreate, представляет собой плату адаптера дисплея. Один из методов объекта, IDirectDraw:: CreateSurface, создает основной объект DirectDrawSurface, который представляет память дисплея, просматриваемую на мониторе. Из основной поверхности может быть создана вне экранная поверхность.
В наиболее общем случае, создается еще одна дополнительная буферная поверхность в дополнение к основной поверхности и обменивается изображениями с первичной поверхностью. В то время как экран занят показом изображения в основной поверхности, дополнительная поверхность заполняется фреймами. Это выполняется путем пересылки вне экранных растров, сохраненных в других объектах DirectDrawSurface в оперативной памяти дисплея. Метод IDirectDrawSurface:: Flip вызывается, когда фреймы размещены, регистры устанавливаются и происходит переключение, когда экран выполняет вертикальную развертку. Эта операция асинхронная, так что прикладная программа может продолжать обработку после вызова IDirectDrawSurface::Flip. (После того, как этот метод вызвался, обратный буфер автоматически блокирует запись до тех пор, пока не произойдет обмен .) После того как произошел обмен, процесс продолжается: прикладная программа составляет следующий фрейм в обратном буфере, вызывает IDirectDrawSurface::Flip, и так далее.
DirectDraw эффективней чем GDI модель Windows 3.1. GDI модель Windows 3.1 не имела никакого прямого доступа к растрам в памяти дисплея. Бит-блиттинг всегда происходил в оперативной памяти системы и лишь затем перемещался в память дисплея, таким образом замедляя эффективность. В DirectDraw, вся обработка выполняется на плате адаптера дисплея всегда, когда это возможно. DirectDraw также эффективней GDI моделей Microsoft Windows 95 и Windows NT, которые используют функцию CreateDIBSection, чтобы разрешить аппаратную обработку.
Функции DirectDraw API были значительно улучшены чем, те что находятся в Game SDK. Следующий список кратко описывает главные усовершенствования:
Были добавлены интерфейсы IDirectDraw2 и IDirectDrawSurface2 . Для большего количества информации, см. Интерфейс IDirectDraw2 и Интерфейс IDirectDrawSurface2.
Были добавлены следующие флажки :
DDBLT_DEPTHFILL DDCAPS_BLTDEPTHFILL
DDCAPS_CANBLTSYSMEM DDCAPS_CANCLIP
DDCAPS_CANCLIPSTRETCHED DDCAPS2_NO2DDURING3DSCENE
DDEDM_REFRESHRATES DDPCAPS_1BIT
DDPCAPS_2BIT DDPF_PALETTEINDEXED1
DDPF_PALETTEINDEXED2 DDSCAPS_ALLOCONLOAD
DDSCAPS_MIPMAP DDSD_MIPMAPCOUNT
DirectDraw - компонент системы Windows, который выполняет общие функции, требуемые и, аппаратными средствами, и программным обеспечением DirectDraw. Также, DirectDraw - единственый пользователь DirectDraw аппаратного уровня абстракции (HAL). Прикладные программы должны писать в DirectDraw. DirectDraw возвращает два набора возможностей, один для аппаратных возможностей и один для возможностей программной эмуляции. При использовании прикладная программа может легко определить то, что DirectDraw эмулирует и какие функциональные возможности обеспечиваются в аппаратных средствах и корректировать себя соответственно.
DirectDraw выполнен в виде библиотеки с динамической связью (DLL) DDRAW. Эта 32 битная DLL осуществляет все общие функциональные возможности, требуемые DirectDraw. Она выполняет все необходимые преобразования между Win32 и HAL, а также полною проверку правильности параметра.Она обеспечивает управление внеэкранной памятью дисплея, и выполняет всю логику, требуемую DirectDraw. Она ответственна за обеспечение COM интерфейса для прикладной программе, сцепление hWnds, чтобы обеспечить отсекание списков, и все другие аппаратно-независимые функциональные возможности.