英語で読む

次の方法で共有


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

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

ミップマップを自動的に生成するには、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場合は、作成呼び出しは成功しますが、ミップマップは生成されません。

Direct3D テクスチャ