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 構造体からのデータ転送は、関連するメンバに限られることが保証される。したがって、この構造体全体を初期化する必要がなくなり、デバイスに送信する必要のあるデータの量が最小限で済む。