エンベロープとオフセット
一部のエフェクトでは、エンベロープまたはオフセットを適用することによって基本的なマグニチュードを変更できます。概要については、「フォース フィードバックの基本概念」を参照してください。
エフェクトを作成または変更するときにエンベロープを適用するには、DIENVELOPE 構造体を初期化して、この構造体へのポインターを DIEFFECT 構造体の lpEnvelope メンバーに設定します。
どのエフェクトでエンベロープがサポートされるかは、デバイス ドライバーによって決まります。一般的には、コンスタント フォース、ランプ フォース、または周期的エフェクトにはエンベロープを適用できますが、条件には適用できません。特定のエフェクトがエンベロープをサポートするかどうかを判別するには、IDirectInputDevice8::GetEffectInfo メソッドを呼び出し、DIEffectInfo 構造体の dwStaticParams メンバーに DIEP_ENVELOPE フラグが設定されているかどうかをチェックします。
オフセットを適用するには、DIEFFECT 構造体の lpvTypeSpecificParams メンバーによって指される DIPERIODIC または DICONDITION 構造体の lOffset メンバーを設定します。周期的エフェクトの場合、オフセットの絶対値とエフェクトのマグニチュードを足した値が DI_FFNOMINALMAX を超えることはできません。
コンスタント フォースやランプ フォースにはオフセットを適用できません。これらの場合は、マグニチュードの変更によって同じ効果を得られます。