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