ミップマップの自動生成 (Direct3D 9)

一連のテクスチャであるミップマップを自動的に作成し、それぞれ異なる解像度にフィルター処理できるようになりました。 Mipmap は、レンダリング時にさまざまな詳細レベルを提供するために一般的に使用されます。 テクスチャの作成時にミップマップを自動的に生成すると、ミップマップはビデオ メモリに格納されるため、ハードウェア フィルタリングを利用できます。

mipmap を自動的に生成するには、CreateTexture を呼び出す前に、新しい使用法D3DUSAGE_AUTOGENMIPMAPを設定します。 この時点からのサブレベルの生成は、アプリケーションに対して完全に透過的です。 アプリケーションでは、最上位のテクスチャ レベルにのみアクセスできます。テクスチャ サブレベルは、ドライバーが必要とする場合にのみ作成されるため、アクセスできません。 サブレベルの生成に時間がかかる場合は、 GenerateMipSubLevels を使用して、アプリケーションに適した時点でサブレベルを生成する必要があることをドライバーにヒントします。

Mipmap フィルター処理

SetAutoGenFilterType は、自動生成時のフィルター品質を制御します。 フィルターの種類を変更すると、ミップマップ サブレベルが汚れて再生成されます。 GetAutoGenFilterType を使用して、現在のフィルターの種類を取得します。 既定のフィルターの種類はD3DTEXF_LINEARです。 ドライバーが線形フィルターをサポートしていない場合、フィルターの種類は D3DTEXF_POINT に設定されます。

これらのメソッドは、テクスチャが D3DUSAGE_AUTOGENMIPMAP で作成されず、エラーが返されない場合は無効です。 ドライバーで通常のテクスチャ フィルター処理でサポートされているすべてのフィルターの種類は、D3DTEXF_NONEを除き自動生成でサポートされます。 各リソースの種類について、ドライバーは、対応するテクスチャ、CubeTexture、および volumetexture フィルター キャップで報告されるすべてのフィルターの種類をサポートする必要があります。

サポートされているフィルターの種類をチェックするには、D3DCAPS9 の TextureFilterCaps メンバーまたは CubeTextureFilterCaps メンバーでサポートされているキャップを確認チェック。

Mipmap のサポート

D3DUSAGE_AUTOGENMIPMAP はヒントに過ぎません。テクスチャの作成時または CheckDeviceFormat を呼び出すときにこれを指定しても、どの種類のデバイス ドライバー インターフェイス (DDI) でもエラーは発生しません。

ソースが自動的に生成されたミップマップであるが、宛先がではない場合、 UpdateTexture の呼び出しは無効です。 ソースは、自動的に生成されていないミップマップにすることができ、宛先は自動的に生成されたミップマップにすることができます。 この場合、最上位の一致レベルのみが更新されます。 他のすべてのソース サブレベルは無視されます。 同様に、ソースと宛先の両方が自動的に生成されると、最上位の一致レベルのみが更新されます。 ソースのサブレベルは無視され、変換先のサブレベルが再生成されます。

ミップマップの自動生成のサポートをチェックするには、D3DCAPS2_CANAUTOGENMIPMAPが設定されていることを確認チェック。 その場合は、D3DUSAGE_AUTOGENMIPMAPCheckDeviceFormat を呼び出します。 戻り値がD3D_OK場合、ミップマップは自動生成されていることが保証されます。 戻り値がD3DOK_NOAUTOGEN場合は、作成呼び出しは成功しますが、mipmap は生成されません。

Direct3D テクスチャ