DirectInput

最新版の DirectX をインストールする方法

C#でゲームパッド入力

Vortice.DirectInput

var jState = joystick.Value.GetCurrentJoystickState();

GetDeviceData(sizeOfObjectData, IntPtr.Zero, ref size, 1);

GetDeviceData(sizeOfObjectData, IntPtr.Zero, ref size, 0);

JoystickUpdate[] bufferedData_ = joystick.Value.GetBufferedJoystickData();

GetCurrentState(ref value);

GetDeviceState(size, (IntPtr)pTemp);

Microsoft

XInput ゲーム コントローラー API

DirectInputの使用

  DirectInputの使用(プログラミングガイド)

    ジョイスティックデータ

    バッファリングされたジョイスティックデータ

    即時ジョイスティックデータ

参考

C# DirectInput

Xinputでゲームコントローラーを実装しようと思ったら、中国製の製品でIpega 9083S、未だにDirect Inputを使っている。色々調べたが、それが現実なのか?

Ipega 9083Sだが、同じ製品でも仕様が違う、私が買った(現在2022/06/01)バージョンは、ケーブル接続でXInputとDirect Inputを切り替えられるが、Bluetooth接続だとDirect Inputしか対応しない。XInput使う方法をだれか教えてくれよ。

ここまで辿り着いくのにも、色々と大変だった。まず、マニュアルが手元に無かったのでネット上に落ちているものを探して、やっていたが、どうも違う。最初はケーブル接続はXInputのみかと思っていたが、Ipega 9083Sは出荷時期で仕様が違うようだ。これで最初ハマった。

次にハマったのが、ライブラリをどれにするか? よっぽどC++で書いてDLLとして読み込もうかと思ったほどだった。C#だと対応しているライブラリがサポート中止となっており選びようが無い。たまたま見つけたのが、Vortice.DirectInput これが2022/6/7公開日だったので、これにした。

ネットで使い方をググったら、使い方が直ぐ判るのかと思って色々と調べたが何も出てこない。こういう時は海外サイトだと思い、あっちこっち行ってみたが無い。

しょうがないので、ソースを調べて使い方を調査した。

解ってみれば簡単だったのだが、まぁ~大変だった。誰か先にやっといてよ。もぉ~。ちなみにXInputはネットに使い方が書いてあった。なんでBluetooth接続だけXInputが使えないのかな? たぶんケーブル接続がXInputだけだったので、ケーブル接続にDirect Inputを追加したように思える、逆なんだよ! 勝手な妄想だけどBluetooth接続が不安定なのでは? だからケーブル接続にDirect Input要望があがるんだ、アンテナの作りがわりぃんだよ!

書いていたら眠くなったので寝る!

Visual Studio C# ゲームコントローラ

Direct Input

DirectX 12 Ultimateのリリース

.NET Framework用ラッパー

Managed DirectXは、Microsoft XNA (XNA) に置換えられたが2014年4月に開発・サポート終了

SlimDX2012年1月を最後に更新されておらず、公式サイトも2019年現在は消失している

DirextXを使用したプログラムをC#で作成することが目的の場合は、Windows 10、Visual Studio 2017の組み合わせでは、Windwos API Code Pack内にある、DirextXのサンプルコードは、DirextXのバージョンの関係で動作しなかったので、はじめから、SharpDXを使用したほうが良いと思います。

Windows API CodePackに含まれている機能

WindowsAPICodePack-Core

SharpDX

]

SharpDXとWindowsAPICodePack-Coreを比べてみると更新日がWindowsAPICodePack-Coreの方が新しい、しかし、使い方がいまいち判らない。なので、SharpDXを選ぶことにするが動くかな?