Platform SDK: DirectX |
フォースを及ぼすデバイスの種類に応じて、エフェクトのフォースの大きさに差を付けたい場合があるだろう。たとえば、ある軸に対して最大 n ニュートンのフォースを生み出すデバイスでアプリケーションのエフェクトが正しく働くと思われるときは、より多くのフォースを生み出すデバイス用にゲインを調整したいことがあるだろう (軸のフォースの最大値を増やすためにゲインを使用することはできないので、生み出すフォースが小さいデバイスに対して、適切な値を基本的エフェクト マグニチュードに設定すべきである)。
また、ゲインを使って、ハードウェアで定義されたエフェクトのマグニチュードを減少させることもできる。
軸やボタンなどのデバイス オブジェクトによって発生するフォースは、オブジェクトの列挙時に DIDEVICEOBJECTINSTANCE 構造体の dwFFMaxForce メンバに格納されて返される (「デバイス オブジェクトの列挙」を参照すること)。
IDirectInputDevice7::SetProperty メソッドを使用して、デバイス全体のゲインを設定することができる。
個別のエフェクトを作成するときは、DIEFFECT 構造体の dwGain メンバに値を設定することで、エフェクトにゲインを設定しなければならない(dwGain がゼロならば、そのエフェクトは感じられない)。この値は、dwFlags パラメータに DIEP_GAIN を指定して IDirectInputEffect::SetParameters を呼び出すことで、後から変更することができる。
DirectInputDevice.SetProperty メソッドを使用して、デバイス全体のゲインを設定することができる。
個別のエフェクトを作成するときは、DIEFFECT 型の lGain メンバに値を設定することで、エフェクトにゲインを設定しなければならない(lGain がゼロならば、そのエフェクトは感じられない)。この値は、flags パラメータに DIEP_GAIN を指定して DirectInputEffect.SetParameters を呼び出すことで、後から変更することができる。
デバイス ゲインを設定する目的は、アプリケーションにすべてのエフェクトのフォースを一括して制御させることである。たとえば、音響ミキサーのメイン ボリューム コントローラのように、フォース フィードバック エフェクトに必要とされる強度をユーザーに指定させるスライド コントローラをアプリケーションに付けたいと思うことがあるだろう。デバイス ゲインを設定すれば、ユーザーの好みに合わせて個別のエフェクトのゲインを、アプリケーションが調整する必要がなくなる。
1 つのゲイン値は 0 から 10,000 の範囲の値を取る。10,000 という値は、マグニチュードをスケーリングすべきでないということを示す。7,500 という値は、フォースの名目マグニチュードの 75% にフォースをスケーリングすべきであるということを意味している。その他の数値もこれに準じる。