Microsoft DirectX 8.0 (Visual Basic)

エフェクトの列挙

DirectInputDevice8.GetEffectsEnum メソッドは、デバイスによりサポートされるエフェクトを列挙する。このメソッドは、サポートされるエフェクトのコレクションを表す DirectInputEnumEffects オブジェクトを返す。DirectInputEnumEffects の各メソッドを使うと、特定のエフェクトに関する情報を取得できる。

"サポートされるエフェクト" と "生成されるエフェクト" ("エフェクト オブジェクト") の両者を区別することが重要である。サポートされるエフェクトは、エンベロープによって形成できるコンスタント フォースである。しかし、このエフェクトには、マグニチュード、方向、継続時間、アタックまたはフェードなどのプロパティがまったくない。アプリケーションでエフェクト オブジェクトを生成するときは、これらのプロパティを設定する。サポートされるエフェクトは、それぞれ異なるパラメータを持つ多くのエフェクト オブジェクトによって表すことができる。たとえば、それぞれ異なる継続時間、マグニチュードおよび方向を持つ複数のコンスタント フォースによって表すことができる。

次のコードは、アプリケーションがハードウェア固有のエフェクトを列挙して、Microsoft® SideWinder® ジョイスティックによりサポートされる固有のエフェクトを探す例である。目的のエフェクトが見つからない場合は、アプリケーションは標準エフェクトのいずれかを代用する。

Const BasketballDribble = _
        "{E84CD1AC-81FA-11D0-94AB-0080C74C7E95}"
Dim diEnumEffects As DirectInputEnumEffects
Dim EffGuid As String
Dim i As Integer

' diDev は DirectInputDevice オブジェクトである。
Set diEnumEffects = didev.GetEffectsEnum(DIEFT_HARDWARE)
For i = 1 To diEnumEffects.GetCount
  If diEnumEffects.GetEffectGuid(i) = BasketballDribble Then
    EffGuid = BasketballDribble
    Exit For
  End If
Next i
If EffGuid <> BasketballDribble Then
  EffGuid = "GUID_Sine"
  ' ここで、列挙されたドリブルのパラメータを設定する。
  .
  .
  .
End If
 

最後に EffGuidDirectInputDevice8.CreateEffect に渡す。