DirectDraw Surface(拡張子`.dds`)は、
マイクロソフト社が開発した、主にテクスチャやキューブマップといったグラフィックス用途の画像を格納するためのファイル形式です。この形式は、画像の圧縮形式と非圧縮形式の両方をサポートしており、特にDirectX対応のグラフィックス処理装置(GPU)や、
PlayStation 3、Xboxなどの家庭用ゲーム機で利用されるDXTC(S3TCとしても知られる)圧縮データを効率的に扱えるように設計されています。
歴史
DDSフォーマットは、
マイクロソフトのグラフィックスAPIであるDirectXのバージョン7.0で初めて導入されました。当初、DirectDraw Surfaceという言葉自体は、DirectDrawおよび
Direct3Dにおける基本的な画像単位の概念をも指していました。続くDirectX 8.0では、このフォーマットがボリュームテクスチャのサポートに対応しました。
DirectX 10の時代になると、DDSフォーマットはさらなる拡張を遂げます。この拡張は、ファイルのヘッダー部分に`DX10`というFourCC(Four Character Code)と、それに続くDX10拡張ヘッダーを含めることによって実現されました。この新しいヘッダー構造により、DXGI(DirectX Graphics Infrastructure)で定義されるより多様なフォーマットや、テクスチャ配列(複数のテクスチャを一つのリソースとして扱う機能)といった現代的なグラフィックス機能への対応が可能となりました。
元々はDirectXのために設計されたファイル形式ですが、DDSフォーマットはDirectX以外の環境でも利用されています。例えば、
OpenGLにおいても、`GL_ARB_texture_compression`や`GL_ARB_texture_compression_bptc`といった拡張機能を通じて、DDSファイルに格納されたデータを扱うことができるようになっています。
関連ツール
かつて、
マイクロソフトが提供していたDirectX SDKには、DDSファイルを閲覧したり編集したりするための公式ツールである`DxTex.exe`(DirectX Texture Tool、またはDirectX Texture Editor)が同梱されていました。しかし、Microsoft Windows SDK 8.0以降、DirectX SDKがWindows SDKに統合された際には、このツール類は公式な提供物としては含まれなくなりました。
それでも、DDSフォーマットの重要性は変わらず、特にDirectX 10の拡張ヘッダーをサポートするようにアップデートされたバージョンの`DxTex.exe`の
ソースコードが、
マイクロソフトのシニアエンジニアであるChuck Walbourn氏によって
GitHub上で公開されています。この
ソースコードは
MIT Licenseの下で提供されており、開発者が独自にツールをビルドしたり、その実装を参考にしたりすることが可能です。このツールは、ユーザーインターフェースにMFC(
Microsoft Foundation Class Library)を利用して実装されています。
DDSフォーマットは、DXTCなどのハードウェアで高速に処理可能なテクスチャ圧縮形式を効率的に格納できることから、リアルタイム3Dグラフィックス、特にゲーム開発において現在でも広く利用されている重要なファイル形式の一つです。
関連項目として、このフォーマットが深く関連する技術として
Microsoft DirectX、その主要なコンポーネントである
Direct3DやDirectDraw、そして対応するテクスチャ圧縮技術であるDXTCなどが挙げられます。