質問: 入力デバイスとしてマウスを扱いたいのですが Win32APIとDirectInputでは (イベント通知を使わずにバッファリング入力を取得する方法で) どれくらいのパフォーマンスなどの差があるのでしょうか。 もしマウスをDirectXで扱うメリットが小さいのであれば Win32APIで実装してしまおうかとも思っています。
回答: パフォーマンス的にはほとんど差はないと思います。というか、差が出るほどの負荷はありません。どちらかというと、処理方法が全く違うので、実装のしやすさで選んだ方が良いと思います。 Win32 API(ウィンドウメッセージ)によるマウス操作は説明するまでもないと思いますが、DirectInputは低レベルの処理しかできないので、例えば、ボタンを押した(あるいは離した)ときに何かするというときは、立ち上がり(下がり)の検出を自前でやらないといけません。また、マウスの移動も移動量しか判らないので、座標も自分で計算しないといけません。 あと、これはキーボード入力にも言えますが、DirectInputだと「メソッド呼び出し時点の状態」しか判らないので、負荷の増大などでフレームレートが下がったりすると、入力を取りこぼす可能性があります。それを防ぐには、入力処理を優先度を上げた別スレッドで行うなどの工夫が必要になります。 マウスやキーボードに関しては、ゲームコントローラーと処理を共通化したいというようなときはDirectInputを使う意味はあると思いますが、そうでないのなら、ウィンドウメッセージで処理した方が簡単で確実だと思います。