Share via


D3DXFX

エフェクトを保存および作成するためのオプションです。

次の表の定数は d3dx9effect.h で定義されています。

エフェクト ステートの保存および復元フラグ 説明
D3DXFX_DONOTSAVESTATE ステートは、ID3DXEffect::Begin が呼び出されたときに保存されず、また ID3DXEffect::End が呼び出されたときに復元されません。
D3DXFX_DONOTSAVESAMPLERSTATE ステート ブロックでは、ID3DXEffect::Begin が呼び出されたときにステートが保存され、ID3DXEffect::End が呼び出されたときにステートが復元されます。
D3DXFX_DONOTSAVESHADERSTATE ステート ブロックでは、ID3DXEffect::Begin が呼び出されたときにステートが保存され (シェーダーおよびシェーダー定数を除く)、ID3DXEffect::End が呼び出されたときにステートが復元されます。
エフェクト作成フラグ 説明
D3DXFX_NOT_CLONEABLE エフェクトは、クローン化できなくなり、シェーダー バイナリ データを格納しなくなります。ID3DXBaseEffect::GetPassDesc は、シェーダー関数のポインターを返しません。このフラグを設定すると、エフェクト システムでシェーダーのコピーをメモリーに保持しておく必要がなくなるため、エフェクトのメモリー使用量が約 50% 低減されます。このフラグは、D3DXCreateEffectD3DXCreateEffectFromFile、およびD3DXCreateEffectFromResource で使用されます。
D3DXFX_LARGEADDRESSAWARE エフェクト リソースをマシンの上位アドレス空間に割り当てられるようにします。これには、文字列を使用できず、相互交換的に処理できないという重要な制限があります。たとえば、次のように指定しても機能しません。
 g_pEffect->SetMatrix( "g_mWorldViewProjection", &mWorldViewProjection ); 
その代わりに、パラメーターのハンドルの保存に ID3DXBaseEffect::GetParameterByName などのメソッドを使用すると、変数をエフェクトに渡すことができます。

次の表の定数は、既定では定義されていないので、開発時に定義する必要があります。

エフェクト プリプロセッサ #define 説明
D3DXFX_LARGEADDRESS_HANDLE 文字列を D3DXHANDLE パラメーターに渡すときにコンパイルされないように、d3dx9.h をインクルードする前にこの値を定義します。これは、実行時に正しい情報が渡されるかどうか確認する際に役立ちます。
エフェクト リンカー フラグ 説明
LARGE_ADDRESS_AWARE リンカー フラグを LARGE_ADDRESS_AWARE = 1 に設定すると、アプリケーションは必要に応じて 2GB のアドレス制限を超えてリソースを割り当てることができるようになります。

エフェクト システムでは、ステートの自動的な保存および復元にステート ブロックが使用されます。ステート ブロックの詳細については、「ステート ブロックによるステートの保存と復元 (Direct3D 9)」を参照してください。