Platform SDK: DirectX |
ここでは、C++ でのアプリケーション開発について説明する。Visual Basicについては、「Direct3D 直接モード Visual Basic サンプル」を参照すること。
Compress サンプルでは、DDS ファイル形式を圧縮されたテクスチャ サーフェスにロードする方法を示す。DDS テクスチャは、DirectX SDK のDirectDraw ツールに含まれている DxTex プログラムを使用して作成できる。
ソース ファイル :(SDK ルート)\Samples\Multimedia\D3dim\Src\Compress
実行可能ファイル :(SDK ルート)\Samples\Multimedia\D3dim\Bin\Compress.exe
利用可能なコマンドを調べるには、F1 キーを押すか、メニューから選択する。
ファイル フォーマットが DDS と呼ばれるのは、情報を DirectDrawSurface にカプセル化するからである。データは、一致するフォーマットのサーフェスに直接読み込める。
ReadDDSTexture 関数は、DDS サーフェスが、ファイルからどのように読み込まれるかを示す。
DDS ファイルのフォーマットは、次のとおりである。
DWORD dwMagic | (0x20534444、または "DDS ") |
DDSURFACEDESC2 ddsd | サーフェスのフォーマットに関する情報 |
BYTE bData1[] | 主サーフェスのデータ |
[BYTE bData2[] | 追加サーフェスのデータがあれば、続く |
このフォーマットは読み書きが簡単で、DXTn 圧縮だけでなく、アルファやマルチ ミップ レベルなどの機能もサポートする。DXTn 圧縮を使用する場合、5 つの圧縮タイプのどれかになる。「圧縮したテクスチャ サーフェス」を参照すること。
テクスチャが読み込まれた後、レンダラーがサポートするピクセル フォーマットを選択する必要がある。サンプルでは、サポートされているピクセル フォーマットが列挙され、連結リストに格納される。ピクセル フォーマットを収集してから、FindBestPixelFormatMatch 関数を使用して、最も適合するピクセル フォーマットをリストから探す。
リファレンス ラスタライザなど、一部の Direct3D デバイスや一部のハードウェア デバイスでは、圧縮テクスチャを直接レンダリングできる。これを直接サポートしないレンダラーでは、圧縮サーフェスを非圧縮サーフェスにブリットする必要がある。関数 BltToUncompressedSurface は、この方法を示している。