私はちょっとしたゲーム エンジンを書いているようなものです。これらが内部からどのように機能するかを純粋に理解するためです。私は現在、OpenGL や DirectX をいじりたくないので、GDI+ とそのすべての WinForms でコントロールを描画することに固執しています。
明らかに、入力を処理する必要があります。具体的には、キーボード イベントです。ただし、これには問題があります。
protected override void OnKeyDown(KeyEventArgs e)
{
Trace.WriteLine(string.Format("KD {0:hh:MM:ss.fff} {1}",
DateTime.Now, e.KeyCode));
}
このコードは (コントロール パネルのキーボード アプレットで最小の繰り返し遅延を設定した場合でも)、次のようになります。
KD 10:02:18.318 Right
KD 10:02:18.570 Right
KD 10:02:18.598 Right
KD 10:02:18.639 Right
KD 10:02:18.667 Right
KD 10:02:18.701 Right
ご覧のとおり、0.25 秒あります。最初の 2 つのイベント間の遅延。これにより、画面上のオブジェクトの動きが鈍くなります。明らかに、最初はわずかに右に移動し、次に目に見える瞬間に一時停止してから続行します。
その問題を解決するにはどうすればよいですか? これは純粋な WinForms で実行できますか、それとも DirectInput (または最近のコーシャの方法は何ですか?) ルートに行く必要がありますか?