5

プログラム全体が複雑すぎて、ここに表示できません。基本的に、最近のgitcommitの緑色のハイライトに注意してください。私はDirectInputを初めて使用するので、いくつかのエラーが発生したと思います。私はMSDNのドキュメントを非常に注意深く調べたので、これを捨ててFIX ITFORMEと刻印するだけではないことを約束します。:)

基本的に、問題をEngine :: getEvent周辺のコードの領域に絞り込んだと思います(238行目以降)。私はこれらの機能がどのように機能するかを理解していません、そして私は異なる結果を達成するために特定の部分をいじりました。ここでの私の目標は、キーボードイベントを直接読み取り、それらの生の数値を画面に出力することです(数値の意味については後で扱います)。ここでの問題は、KEYBOARD_BUFFER_SIZEに関連しています。小さくするとプログラムは正常に動作しているように見えますが、イベントは出力されません。大きくすると、動作は少し良くなりますが、速度が低下してからフリーズし始めます(OpenGLウィンドウには回転するカラーキューブがあります)。キーボードイベントを適切にキャプチャするにはどうすればよいですか?

コードの上位にあるすべてのセットアップ手順で戻り値を確認しました。それらはすべてDI_OKを問題なく返します。

4

1 に答える 1

2

あなたのコードは大丈夫のようです(私が過去に使用したこのチュートリアルによると)。いくつかのスタックベースの配列の使用には疑問がありますが、それほど問題にはならないはずです(多数の同時getEvent呼び出しを実行し始めない限り)。

ただし、最善の策は、DirectInputの使用を停止し、WindowsRawInput使用を開始することです。必要な結果を得るには、DI以外のものを実際に使用する必要があることに後で気付くよりも、この切り替えを早い段階(つまり今)に行うのが最善です。

于 2011-04-15T01:11:26.680 に答える