トップページ
Irrlicht導入ガイド
ゲームエンジンの比較
Irrlichtの基本事項
座標系
移動処理と当たり判定
照明、フォグ、その他
スプライトとGUIの表示
文字表示
アニメーション
シャドウ(影)の描画
HLSLシェーダの利用
技術記事
■OggによるストリーミングBGM演奏
■複数マウス利用(Raw input)
■Ritterの境界球
■VoiceTrekツール
About us
MUTATE Software

最終更新 2017/07/21

Raw inputによる複数マウス利用

WindowsのRaw input API

Windowsにおいてマウスとキーボードのリアルタイム入力を行なう方法は複数存在しますが、通常のWindowsメッセージおよびGetASyncKeyState, GetKeyState API等では、複数の入力デバイスを識別することは出来ず、全て混合された入力としてのみ受け取ることになります。

Raw input APIを利用することで、複数の入力デバイスからの入力を識別することが出来るため、マルチプレイヤーゲーム等で有用と考えられます。

使用する主なAPI

WM_INPUT
Raw inputのメッセージはWM_INPUTで受け取ります。しかし、デフォルトではこれを受け取る設定になっていないため、RegisterRawInputDevicesにて設定する必要があります。

RegisterRawInputDevices
WM_INPUTを受け取れるように設定します。

SetWindowSubclass
本来、ウィンドウメッセージを受け取るにはウィンドウプロシージャに手を入れる必要がありますが、ゲームエンジン等のフレームワークを使っている場合、ウィンドウプロシージャが隠蔽されていて手を出せない場合が多々あります。
このような場合には、ウィンドウメッセージの横取りをする必要があり、これを一般にウィンドウのサブクラス化などと呼びます。
SetWindowSubclassはWindowsXP以降で導入された比較的新しいAPIで、ウィンドウのサブクラス化を安全に行うことが出来ます。

参考資料

Raw Input (MSDN)
各々のAPI仕様を読むよりも、"Using Raw Input"を読んだほうが分かり易いです。

Raw inputによる複数マウス・キーボード利用のデモ

Raw inputを使って複数のマウス、キーボードを使用する簡単なデモを作成しました。

Raw inputによる複数HIDサンプル

RawInput.cpp, RawInput.h
Raw input入力ライブラリ本体

RawInputReceiver.h
上記ライブラリで利用するレシーバのサンプル

RawInputDemo.cpp
複数のマウスとキーボードを利用するサンプル。実際にマウスとキーボードを2台ずつ接続して実行してください。


Copyright by MUTATE Systems 2017
管理者宛メール