Microsoft DirectX 8.0 (C++)

エフェクトの変更

エフェクトの再生中でもエフェクトのパラメータを変更することができる場合がある。これは IDirectInputEffect::SetParameters メソッドを使用して行う。

DIEFFECTINFO 構造体の dwDynamicParams メンバは、エフェクトの再生中でも変更できるエフェクトのパラメータを通知する。エフェクトの再生中には変更できないエフェクトのパラメータを変更しようとして、エフェクトが実際にまだ再生しているときは、通常、Microsoft® DirectInput® はエフェクトを停止させ、パラメータを更新し、エフェクトを再スタートさせる。この DirectInput のデフォルトの動作を無効にするには、DIEP_NORESTART フラグを渡せばよい。

次の C++ のプログラム例では、「エフェクトの作成」にあるサンプル プログラムでセットされたコンスタント フォースのマグニチュードを変更する。

DIEFFECT        diEffect;           // エフェクト用のパラメータ。
DICONSTANTFORCE diConstantForce;    // タイプ固有パラメータ。
 
diConstantForce.lMagnitude = 5000;
diEffect.dwSize = sizeof(DIEFFECT); 
diEffect.cbTypeSpecificParams = sizeof(DICONSTANTFORCE); 
diEffect.lpvTypeSpecificParams = &diConstantForce;
hr = lpdiEffect->SetParameters(&diEffect, DIEP_TYPESPECIFICPARAMS);

DIEP_TYPESPECIFICPARAMS フラグにより、DIEFFECT 構造体からのデータ転送は、関連するメンバに限られることが保証される。したがって、この構造体全体を初期化する必要がなくなり、デバイスに送信する必要のあるデータの量が最小限で済む。