Microsoft DirectX 8.0 (C++)

圧縮したテクスチャの作成

アダプタで圧縮テクスチャ フォーマットをサポートできるデバイスを作成した後、圧縮テクスチャ リソースを作成できる。IDirect3DDevice8::CreateTexture を呼び出して、Format パラメータに圧縮テクスチャ フォーマットを指定する。

テクスチャ オブジェクトに画像をロードする前に、IDirect3DTexture8::GetSurfaceLevel メソッドを呼び出して、テクスチャ サーフェスへのポインタを取得する。

これで、D3DXLoadSurface で始まる D3DX 関数を使用して、GetSurfaceLevel で取得したサーフェスに画像をロードできる。これらの関数は、圧縮テクスチャ フォーマット間の変換を処理する。

SDK で提供される DXTex ツールを使用すると、圧縮したテクスチャ (DDS) ファイルの作成と変換を行うことができる。独自の DDS ファイルを作成することもできる。

この動作の利点は、アプリケーションで、特定のフォーマットで特定の幅と高さを持つサーフェスに必要なストレージ容量を計算しなくても圧縮したサーフェスのコンテンツをファイルにコピーできることである。

圧縮したテクスチャの 5 つのタイプを以下の表に示す。データの保存方法の詳細については、「圧縮したテクスチャ フォーマット」を参照すること。次の情報は、独自の圧縮ルーチンを記述する場合に必要である。

FOURCC 説明 アルファ値事前掛け算済み
DXT1 不透明/1 ビット アルファ N/A
DXT2 明示的なアルファ Yes
DXT3 明示的なアルファ No
DXT4 補間したアルファ Yes
DXT5 補間したアルファ No

  値事前掛け算済みではないフォーマットから値事前掛け算済みのフォーマットにデータを転送する場合、Direct3D はアルファ値を基に色をスケーリングする。値事前掛け算済みのファーマットから値事前掛け算済みではないフォーマットへのデータ転送はサポートされない。値事前掛け算済みのアルファ転送元から値事前掛け算済みではないアルファ転送先へのデータ転送を試すと、メソッドは D3DERR_INVALIDCALL を返す。値事前掛け算済みのアルファ転送元からアルファがない転送先にデータを転送すると、アルファでスケーリングされる転送元色成分はそのままコピーされる。