Microsoft DirectX 8.0 (C++)

圧縮したテクスチャのサポートの判定

アプリケーションでレンダリング デバイスを作成する前に、IDirect3D8::CheckDeviceFormat メソッドを呼び出して、圧縮テクスチャ サーフェスからのテクスチャ処理をデバイスがサポートするかどうかを調べることができる。このメソッドは、アダプタを表すデバイス上でサーフェス フォーマットがテクスチャとして使用できるかどうかを判定する。アダプタをテストするには、DXT1、DXT2、DXT3、DXT4、または DXT5 の FOURCC コードを使用するピクセル フォーマットのいずれかを指定する。CheckDeviceFormat が D3D_OK を返した場合、デバイスはそのフォーマットを使用する圧縮テクスチャ サーフェスから直接テクスチャを得ることができる。この場合、IDirect3DDevice8::SetTexture メソッドを呼び出して、Microsoft®Direct3D® で圧縮テクスチャ サーフェスを直接使用できる。次のコードは、アダプタが D3DFMT_DXT1 圧縮テクスチャ フォーマットをサポートするかどうかを判定する方法を示している。

BOOL IsCompressedTextureFormatOk( D3DFORMAT TextureFormat, 
                                  D3DFORMAT AdapterFormat ) {
    HRESULT hr = pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT,
                                          D3DDEVTYPE_HAL,
                                          AdapterFormat,
                                          0,
                                          D3DRTYPE_TEXTURE,
                                          D3DFMT_DXT1);

    return SUCCEEDED( hr );
}

デバイスが圧縮テクスチャ サーフェスからのテクスチャ処理をサポートしない場合でも、テクスチャ データを圧縮フォーマット サーフェス内に格納できる。ただし、圧縮テクスチャをテクスチャとして使用する前に、サポートされるフォーマットに変換しなければならない。