質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DirectX

DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。

Q&A

解決済

2回答

4947閲覧

マウスを扱うときのWin32APIとDirectInputの差

aridai1221

総合スコア45

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DirectX

DirectX(ダイレクトエックス)は、 マイクロソフトが開発したゲーム・マルチメディア処理用のAPIの集合です。

1グッド

2クリップ

投稿2016/06/28 22:37

編集2016/06/28 22:44

入力デバイスとしてマウスを扱いたいのですが
Win32APIとDirectInputでは (イベント通知を使わずにバッファリング入力を取得する方法で)
どれくらいのパフォーマンスなどの差があるのでしょうか。

もしマウスをDirectXで扱うメリットが小さいのであれば
Win32APIで実装してしまおうかとも思っています。

maisumakun👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

パフォーマンス的にはほとんど差はないと思います。というか、差が出るほどの負荷はありません。どちらかというと、処理方法が全く違うので、実装のしやすさで選んだ方が良いと思います。

Win32 API(ウィンドウメッセージ)によるマウス操作は説明するまでもないと思いますが、DirectInputは低レベルの処理しかできないので、例えば、ボタンを押した(あるいは離した)ときに何かするというときは、立ち上がり(下がり)の検出を自前でやらないといけません。また、マウスの移動も移動量しか判らないので、座標も自分で計算しないといけません。

あと、これはキーボード入力にも言えますが、DirectInputだと「メソッド呼び出し時点の状態」しか判らないので、負荷の増大などでフレームレートが下がったりすると、入力を取りこぼす可能性があります。それを防ぐには、入力処理を優先度を上げた別スレッドで行うなどの工夫が必要になります。

マウスやキーボードに関しては、ゲームコントローラーと処理を共通化したいというようなときはDirectInputを使う意味はあると思いますが、そうでないのなら、ウィンドウメッセージで処理した方が簡単で確実だと思います。

投稿2016/06/29 00:01

catsforepaw

総合スコア5938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aridai1221

2016/06/29 05:34

回答ありがとうございます。 マウスの座標の取得も難しいみたいなので Win32 API を使うことにします。
guest

0

質問の目的が、Direct-X を使う前程であれば、
Direct 系に統一した方が、混乱しないで済むはずです。

どれくらいのパフォーマンスなどの差があるのでしょうか。

を実装して、確認、評価するのは、質問者さんの御仕事です。
その際に躓いたり、不明点を質問したりするために
teratail 他の、技術系掲示板は存在します。

各サンプルや、
MS提供のDirect x をゲーム用途にライブラリ化したものや、
古くは、EXCEL VBA をランチャーとしてDirect X使ったサンプル
などが検索出来たりしますので、どうやっているか?の
参考にはなるかもしれません。

投稿2016/06/28 23:02

編集2016/06/28 23:19
daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aridai1221

2016/06/29 05:36

回答ありがとうございます。 ちょっとふさわしくない質問でしたね。 ご指摘ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問