DirectDraw (ddraw.dll) は、かつてMicrosoftのDirectX APIの一部であった API です。DirectDraw は、アプリケーションでの2Dグラフィックスのレンダリングを高速化するために使用されます。DirectDraw を使用すると、他のほとんどの MS Windows アプリケーションと同様に、アプリケーションをフルスクリーンで実行したり、ウィンドウに埋め込んだりすることができます。DirectDraw は、クライアントコンピューターでハードウェア アクセラレーションが利用可能な場合は、それを使用します。DirectDraw は、ビデオ メモリ、ハードウェア オーバーレイ、ハードウェアブリッター、およびページ フリッピングに直接アクセスできます。そのビデオ メモリマネージャーは、さまざまな種類のディスプレイ アダプターのブリッティングおよびカラー デコンプレッション機能を最大限に活用して、ビデオ メモリを簡単に操作できます。
DirectDraw は2D API であるため、2D レンダリング用のコマンドが含まれています。3D ハードウェア アクセラレーションはサポートしていませんが、 DirectDraw のバージョン 7.0 までは、それぞれのバージョンの Direct3D と密接に連携しています。Direct3D 7.0 以前で 3D アクセラレーションを利用するには、DirectDraw を使用して IDirectDraw7-> QueryInterfaceの助けを借りて IDirect3D インターフェイスを作成する必要があります。このインターフェイスから IDirect3DDevice が生成され、そこから Direct3D API の残りの部分にアクセスして利用できます。DirectDraw は、テクスチャ (サーフェス経由)、クリッパー、パレット、ピクセル フォーマットを Direct3D に提供するほか、レンダリングされた画像を画面に表示する最終プレゼンテーション パスも提供します。
DirectDrawはWindows Mobile 5.0でWindows Mobile向けに導入され、 GAPIのグラフィックコンポーネントに取って代わり、その後GAPIは非推奨となった。[ 1 ]
DirectXバージョン8.0のリリースに伴い、DirectDrawはDirectX Graphicsという新しいパッケージに統合されました。DirectX GraphicsはDirect3Dを拡張し、DirectDraw APIにいくつかの機能を追加しました。DirectDrawは引き続きプログラマーが使用でき、64ビットでコンパイルすることも可能ですが、古いDirectXインターフェース(DirectX 7以前)を使用する必要があります。
NVIDIA、AMD、Intelのドライバーは、DirectDrawの多くの基本機能に対してハードウェアアクセラレーションをサポートしています。しかし、最近のWindowsバージョンにおけるWindowsデスクトップマネージャー(DWM)の変更により、オーバーレイなどの機能は一切サポートされなくなりました。
2010年6月、DirectDrawはDirectX SDKパッケージから削除されましたが[ 2 ]、2012年にDirectX SDKはWindows Platform SDKに統合され、DirectDrawは再び含まれるようになりました。
DirectDrawに依存する古いゲームとのWindowsの互換性が低下しており、Command & Conquer、Warcraft 2、Theme Hospitalなどが影響を受けています。新しいバージョンのWindowsでは、一部のゲームは32ビット深度未満では動作せず(例えばDangerous Waters)、他のゲームは切り替え時に黒画面が表示されたり、グリッチが発生したりします。DirectDrawの再実装によってこれらの互換性の問題が解決されることが確認されています。一般的に使用されている代替手段には以下が含まれます。