Platform SDK: DirectX

ステップ 1 : フォース フィードバック デバイスの初期化

[C++]

ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「DirectInput C/C++ チュートリアル」を参照すること。

[Visual Basic]

フォース フィードバックを実装するには、まず、適切なデバイスが使用可能かどうかを調べ、使用可能であれば、そのデバイスに DirectInputDevice オブジェクトを作成しなければならない。ここで、x 軸と y 軸でエフェクトを再生できるデバイスが必要なアプリケーションを考えてみる。

次のサンプルは、DirectInput オブジェクトを作成し、それを使って DirectInputEnumDevices オブジェクト内の利用可能なデバイスを列挙することから開始する。すべてのフォース フィードバック デバイスは DIDEVTYPE_JOYSTICK 型なので、列挙対象はこの型のアタッチ済みデバイスに制限されている。

' dx は初期化済みのグローバル DirectX オブジェクト。
' di は、グローバル DirectInput オブジェクト。
 
Dim diDevInst As DirectInputDeviceInstance
Dim diDevObjEnum As DirectInputEnumDeviceObjects
Dim devobj As DirectInputDeviceObjectInstance
 
Dim devcaps As DIDEVCAPS
Dim ForceX As Boolean, ForceY As Boolean
Dim FoundForce As Boolean
Dim efftype As Long
Dim strObjGuid As String
 
Dim i As Integer, iAxes As Integer

Set di = dx.DirectInputCreate
Set diEnumDev = di.GetDIEnumDevices(DIDEVTYPE_JOYSTICK, _
        DIEDFL_ATTACHEDONLY)

ここで、サンプルはフォース フィードバック能力を持つデバイスを見つけるまで、使用可能なデバイスの調査を反復する。

For i = 1 To diEnumDev.GetCount
  Set diDevInst = diEnumDev.GetItem(i)
  Set didev = di.CreateDevice(diDevInst.GetGuidInstance)
  Call didev.GetCapabilities(devcaps)
  If devcaps.lFlags And DIDC_FORCEFEEDBACK Then

ここで、サンプルは DirectInputEnumDeviceObjects コレクションに含まれるデバイス上の軸を列挙する。

    Set diDevObjEnum = didev.GetDeviceObjectsEnum(DIDFT_AXIS)
    ForceX = False
    ForceY = False
 

次に、軸の中から x 軸と y 軸を探し、それらの軸がフォース フィードバック エフェクトをサポートするかどうかを調べる。

    For iAxes = 1 To diDevObjEnum.GetCount
      Set devobj = diDevObjEnum.GetItem(iAxes)
      strObjGuid = devobj.GetGuidType
      If strObjGuid = "GUID_XAxis" Then
        If devobj.GetFlags And DIDOI_FFACTUATOR Then
          ForceX = True
        End If
      ElseIf strObjGuid = "GUID_YAxis" Then
        If devobj.GetFlags And DIDOI_FFACTUATOR Then
          ForceY = True
        End If
      End If
    Next iAxes
    FoundForce = ForceX And ForceY
    if FoundForce Then Exit For
  End If
Next i

If Not FoundForce Then
  MsgBox "Two force feedback axes required."
End

次項 : ステップ 2 : デバイス プロパティの設定