Platform SDK: DirectX

DIEFFECTINFO

DIEFFECTINFO 構造体は、IDirectInputDevice7::EnumEffects および IDirectInputDevice7::GetEffectInfo メソッドが、デバイスによりサポートされるエフェクトに関する情報を返すために使用する。

typedef struct DIEFFECTINFO { 
    DWORD dwSize; 
    GUID guid; 
    DWORD dwEffType; 
    DWORD dwStaticParams;
    DWORD dwDynamicParams;
    TCHAR tszName[MAX_PATH]; 
} DIEFFECTINFO, *LPDIEFFECTINFO; 
 
typedef const DIEFFECTINFO  *LPCDIEFFECTINFO;

メンバ

dwSize
構造体のバイト単位のサイズ。列挙の間に、アプリケーションはこの値を調べ、構造体のメンバがいくつ有効であるかを確認できる。この構造体が IDirectInputDevice7::GetEffectInfo メソッドに渡される前に、この構造体のメンバを初期化しなければならない。
guid
エフェクトの識別子。
dwEffType
ゼロまたは以下の値のいずれか。
DIEFT_ALL
IDirectInputDevice7::EnumEffects に対してのみ有効。タイプに関係なくすべてのエフェクトを列挙する。このフラグは、ほかのどのフラグとも組み合せることはできない。
DIEFT_CONDITION
エフェクトは、条件を表す。条件を作成または修正する際は、DIEFFECT 構造体の lpvTypeSpecificParams メンバが DICONDITION 構造体 (各軸に 1 つ) から成る配列を指し、cbTypeSpecificParams メンバには cAxis * sizeof(DICONDITION) を設定しなければならない。

すべてのデバイスが、条件のすべてのパラメータをサポートするわけではない。エフェクトの能力フラグをチェックして、どの能力が使用可能であるかを調べる。

このフラグは、IDirectInputDevice7::EnumEffects に渡して、列挙対象を条件に制限することができる。

DIEFT_CONSTANTFORCE
エフェクトは、コンスタント フォース エフェクトを表す。コンスタント フォース エフェクトを作成または修正する際は、DIEFFECT 構造体の lpvTypeSpecificParams メンバが DICONSTANTFORCE 構造体を指し、cbTypeSpecificParams メンバには sizeof(DICONSTANTFORCE) を設定しなければならない。

このフラグは、IDirectInputDevice7::EnumEffects に渡して、列挙対象をコンスタント フォース エフェクトに制限することができる。

DIEFT_CUSTOMFORCE
エフェクトは、カスタム フォース エフェクトを表す。カスタム フォース エフェクトを作成または修正する際は、DIEFFECT 構造体の lpvTypeSpecificParams メンバが DICUSTOMFORCE 構造体を指し、cbTypeSpecificParams メンバには sizeof(DICUSTOMFORCE) を設定しなければならない。

このフラグは、IDirectInputDevice7::EnumEffects に渡して、列挙対象をカスタム フォース エフェクトに制限することができる。

DIEFT_DEADBAND
この条件エフェクトに対するエフェクト ジェネレータは、lDeadBand パラメータをサポートする。
DIEFT_FFATTACK
このエフェクトに対するエフェクト ジェネレータは、アタック エンベロープ パラメータをサポートする。エフェクト ジェネレータがアタックをサポートしていなければ、DIENVELOPE 構造体のアタック レベルとアタック時間のパラメータを、エフェクトが無視する。

DIEFT_FFATTACK と DIEFT_FFFADE が両方とも設定されていなければ、エフェクトは、エンベロープをサポートせず、指定のエンベロープは、すべて無視される。

DIEFT_FFFADE
このエフェクトに対するエフェクト ジェネレータは、フェード パラメータをサポートする。エフェクト ジェネレータがフェードをサポートしていなければ、DIENVELOPE 構造体のフェード レベルとフォード時間のパラメータを、エフェクトが無視する。

DIEFT_FFATTACK と DIEFT_FFFADE が両方とも設定されていなければ、エフェクトは、エンベロープをサポートせず、指定のエンベロープは、すべて無視される。

DIEFT_HARDWARE
エフェクトは、ハードウェア固有のエフェクトを表す。ハードウェア固有エフェクトの使用の詳細については、ハードウェアのドキュメントを参照すること。

このフラグを IDirectInputDevice7::EnumEffects メソッドに渡して、列挙対象をハードウェア固有エフェクトに制限することができる。

DIEFT_PERIODIC
エフェクトは、周期的フォース エフェクトを表す。周期的フォース エフェクトを作成または修正する際は、DIEFFECT 構造体の lpvTypeSpecificParams メンバが DIPERIODIC 構造体を指し、cbTypeSpecificParams メンバには sizeof(DIPERIODIC) を設定しなければならない。

このフラグは、IDirectInputDevice7::EnumEffects に渡して、列挙対象を周期的フォース エフェクトに制限することができる。

DIEFT_POSNEGCOEFFICIENTS
このエフェクトに対するエフェクト ジェネレータは、条件に対する 2 つの係数値、一方は正の軸移動、他方は負の軸移動に対する係数をサポートする。デバイスが一方向の係数しかサポートしない場合、DICONDITION 構造体の負の係数が無視され、正の係数が両方の方向で使用される。
DIEFT_POSNEGSATURATION
このエフェクトに対するエフェクト ジェネレータは、正負の両方のフォース出力に対する最大飽和をサポートする。デバイスが一方向の飽和値しかサポートしないのであれば、DICONDITION 構造体の負の飽和値が無視され、正の飽和値が両方の方向で使用される。
DIEFT_RAMPFORCE
エフェクトは、傾斜フォース エフェクトを表す。傾斜フォース エフェクトを作成または修正する際は、DIEFFECT 構造体の lpvTypeSpecificParams メンバが DIRAMPFORCE 構造体を指し、cbTypeSpecificParams メンバには sizeof(DIRAMPFORCE) を設定しなければならない。

このフラグは、IDirectInputDevice7::EnumEffects に渡して、列挙対象を傾斜フォース エフェクトに制限することができる。

DIEFT_SATURATION
このエフェクトに対するエフェクト ジェネレータは、条件エフェクトの飽和をサポートする。エフェクト ジェネレータが飽和をサポートしていなければ、条件が生成したフォースは、デバイスが生成できる最大フォースによってのみ制限される。
dwStaticParams
エフェクトがサポートするパラメータを表すゼロ以上の DIEP_* 値。たとえば、DIEP_ENVELOPE が設定されていれば、エフェクトはエンベロープをサポートする。このメンバが取りうる値のリストについては、「IDirectInputEffect::GetParameters」を参照すること。

デバイスがサポートしていないエフェクト パラメータをアプリケーションが使用しようとしても、エラーにはならない。サポートされていないパラメータは、無視されるだけである。

この情報は、アプリケーションが特定のデバイスの能力にフォース フィードバックを適合させて使えるようにするために提供されている。

dwDynamicParams
エフェクトの再生中に修正できるエフェクト パラメータを示すゼロ以上の DIEP_* 値。このメンバが取りうる値のリストについては、「IDirectInputEffect::GetParameters」を参照すること。

エフェクトの再生中にアプリケーションがパラメータを変更しようとしても、ドライバがそのエフェクトを動的に修正する機能をサポートしていない場合は、ドライバはそのエフェクトを停止して、パラメータを更新し、その後にエフェクトを再開することができる。詳細については、「IDirectInputEffect::SetParameters」を参照すること。

tszName[MAX_PATH]
エフェクトの名前。たとえば、"Sawtooth up" または "Constant フォース" など。

注意

dwEffType フラグからエフェクト タイプを抽出するには、DIEFT_GETTYPE マクロを使用する。

動作環境

  Windows NT/2000 :Windows 2000 が必要。
  Windows 95/98 : Windows 95 以降が必要。Windows 95 用に再配布可能な形で使用可能。
  ヘッダー : dinput.h で宣言。