Platform SDK: DirectX |
DirectDraw には、3D モデルのテクスチャに使用するサーフェス圧縮機能がある。圧縮テクスチャ サーフェスのデータの作成および操作については、DirectDraw ドキュメントの「圧縮したテクスチャ サーフェス」を参照すること。
アプリケーションでレンダリング デバイスを作成した後、IDirect3DDevice7::EnumTextureFormats メソッドを呼び出して、圧縮テクスチャ サーフェスからのテクスチャ処理をデバイスがサポートするかどうかを調べることができる。このメソッドは、D3DEnumPixelFormatsCallback コールバック関数を呼び出す。この関数は、テクスチャ マップ用にデバイスがサポートするピクセル フォーマットごとに準備する。列挙されるピクセル フォーマットで DXT1、DXT2、DXT3、DXT4、または DXT5 の 4 文字コード (FOURCCs) を使用する場合、デバイスはそのフォーマットを使用する圧縮テクスチャ サーフェスから直接テクスチャを得ることができる。この場合、IDirect3DDevice7::SetTexture メソッドを呼び出して、Direct3D で圧縮テクスチャ サーフェスを直接使用できる。デバイスが圧縮テクスチャ サーフェスからのテクスチャ処理をサポートしない場合でも、テクスチャ データを圧縮フォーマット サーフェス内に格納できる。ただし、圧縮テクスチャをテクスチャとして使用する前に、サポートされるフォーマットに変換しなければならない。DirectDraw のブリット メソッドの IDirectDrawSurface7::Blt およびIDirectDrawSurface7::BltFast は、圧縮フォーマットから標準 RGBA フォーマットへの変換を自動的に実行する。情報の損失を最小限に抑えるには、圧縮フォーマットと一致する転送先ピクセル フォーマットを選択するようにする。たとえば、ARGB:1555 は DXT1 の転送先フォーマットには適しているが、DXT3 には ARGB:4444 の方が適している。DXT3 には 4 ビットのアルファ情報が含まれるためである。
アプリケーションでレンダリング デバイスを作成した後、Direct3DDevice7.GetTextureFormatsEnum メソッドを呼び出して、圧縮テクスチャ サーフェスからのテクスチャ処理をデバイスがサポートするかどうかを調べることができる。このメソッドは、Direct3DEnumPixelFormats クラス オブジェクトへの参照を返す。このクラス オブジェクトは、サポートされているテクスチャ サーフェス ピクセル フォーマットについての情報を取得するためのメソッドを公開する。Direct3DEnumPixelFormats.GetItem メソッドは、サポートされているテクスチャ フォーマットを記述する DDPIXELFORMAT 型に値を設定する。列挙されるピクセル フォーマットで DXT1、DXT2、DXT3、DXT4、または DXT5 の 4 文字コード (FOURCCs) を使用する場合、デバイスはそのフォーマットを使用する圧縮テクスチャ サーフェスから直接テクスチャを得ることができる。この場合、Direct3DDevice7.SetTexture メソッドを呼び出して、Direct3D で圧縮テクスチャ サーフェスを直接使用できる。デバイスが圧縮テクスチャ サーフェスからのテクスチャ処理をサポートしない場合でも、テクスチャ データを圧縮フォーマット サーフェス内に格納できる。ただし、圧縮テクスチャをテクスチャとして使用する前に、サポートされるフォーマットに変換しなければならない。DirectDraw のブリット メソッドの DirectDrawSurface7.Blt および DirectDrawSurface7.BltFast は、圧縮フォーマットから標準 RGBA フォーマットへの変換を自動的に実行する。情報の損失を最小限に抑えるには、圧縮フォーマットと一致する転送先ピクセル フォーマットを選択するようにする。たとえば、ARGB:1555 は DXT1 の転送先フォーマットには適しているが、DXT3 には ARGB:4444 の方が適している。DXT3 には 4 ビットのアルファ情報が含まれるためである。