Platform SDK: DirectX

エンベロープとオフセット

エンベロープとオフセットを使って、いくつかの基本的マグニチュードを変更することができる。概要については、「フォース フィードバックの基本概念」を参照すること。

[C++]

エフェクトの生成または変更の際にエンベロープを適用するには、DIENVELOPE 構造体を初期化して、この構造体へのポインタを DIEFFECT 構造体の lpEnvelope メンバに設定する。

どのエフェクトがエンベロープをサポートするかを決定するのはデバイス ドライバである。通常は、コンスタント フォース、傾斜フォースおよび周期的フォースにエンベロープを適用できるが、条件には適用できない。特定のフォースがエンベロープをサポートするかどうかを判定するには、IDirectInputDevice7::GetEffectInfo メソッドを呼び出し、DIEFFECTINFO 構造体の dwStaticParams メンバにある DIEP_ENVELOPE フラグをチェックする。

オフセットを適用するには、DIEFFECT 構造体の lpvTypeSpecificParams メンバが指す DIPERIODIC 構造体または DICONDITION 構造体の lOffset メンバを設定する。周期的エフェクトの場合、オフセットの絶対値とエフェクトのマグニチュードを足した値が DI_FFNOMINALMAX を超えてはならない。

オフセットをコンスタント フォースや傾斜フォースに適用することはできない。これらのフォースの場合、マグニチュードを変更すれば同じエフェクトを得ることができる。

[Visual Basic]

エフェクトの生成または変更の際にエンベロープを適用するには、DIEFFECT 型の bUseEnvelope メンバを TRUE に設定し、DIENVELOPE 型の envelope メンバを初期化する。

どのエフェクトがエンベロープをサポートするかを決定するのはデバイス ドライバである。通常は、コンスタント フォース、傾斜フォースおよび周期的フォースにエンベロープを適用できるが、条件には適用できない。特定のフォースがエンベロープをサポートするかどうかを判定するには、DirectInputEnumEffects.GetStaticParams メソッドを呼び出し、返された値の DIEP_ENVELOPE フラグをチェックする。

オフセットを適用するには、DIEFFECTperiodic メンバや condition メンバで使用される、DIPERIODICFORCE 型または DICONDITION 型の lOffset メンバを設定する。周期的エフェクトの場合、オフセットの絶対値とエフェクトのマグニチュードを足した値が 10,000 を超えてはならない。

オフセットをコンスタント フォースや傾斜フォースに適用することはできない。これらのフォースの場合、マグニチュードを変更すれば同じエフェクトを得ることができる。