• D言語とDirectInputとゲームコントローラと

    2011年04月06日 00時43分
    アクションゲームですとキーボードでの操作は厳しいかと思います。
    なので、DirectInputでゲームコントローラの処理を書きました。

    基本的にC++と同様にやれば動くので
    例によって詳細はどこか他サイトを参照してください。


    ここではDから使うときのポイントだけ書いておこうと思います。


    DirectInputは複数のゲームコントローラを認識出来ますので、
    最初にデバイスを列挙することになります。

    このとき、IDirectInput8.EnumDevicesを使いますが、
    引数の関数ポインタで指定する関数は当然DirectInputから呼ばれますので、定義時に注意が必要です。

    具体的にはextern(Windows)を指定します。
    1extern (Windows)
    2static
    3BOOL enumerateDeviceCallback(const(DIDEVICEINSTANCE)* device, VOID* context)
    4{
    5    // なにがしかの処理
    6}


    軸の列挙に使用するIDirectInputDevice8.EnumObjectsに指定する関数も同様です。


    ちなみに、キーボードいっぱい刺さってたらどうなるんだろう?と思い調べたところ、
    全部のキーボードを1つのキーボードとして認識するそうです。(マウスも)
    DirectInput の使用方法(MSDN)

    コメントを書く

    名前
    本文
    編集用パスワード 入力すると編集が行えます
    管理者のみ閲覧