私は、Windowsで使用するための高速でかなり正確なゲームタイマーを作成しています。高解像度のタイミングにはQueryPerformanceCounter()を使用することをお勧めしますが、期待どおりに動作しますが、実行オーバーヘッドが少ない代替案を探しています。QueryPerformanceCounter()とQueryInterruptTime()とKeQueryInterruptTime()との比較
私はいくつかのグーグルを行い、QueryInterruptTime()とそれに対応するQueryInterruptTimePrecise()の言及を発見しました。これはより正確である必要がありますが、オーバーヘッドが大きくなります。彼らのドキュメント(hereとhere)は、システム割り込み時間を最も近いシステムティック(または100ns単位)にすることを説明しています。 QueryInterruptTime()はタイミングの候補としてよく見えるようになり始めていますが、そのメリットとその傾向についての説明はほとんどありません。
そして、KeQueryInterruptTime()とKeQueryInterruptTimePrecise()があり、私は彼らの "non-Ke"の兄弟とどのように違うか分かりません。
誰でもQueryInterruptTime()とKeQueryInterruptTime()、その相違点、賛否両論を記述し、よりユビキタスなQueryPerformanceCounter()と比較できますか?
実際にこのようなことは必要ですか?ほとんどのゲームコードでは、実際には「今すぐ」の時間を知る必要はなく、フレームが実際にスクリーン上にレンダリングされるときの時間が気になります。したがって、あなたのゲームは、理想化されたレートに従って進行するタイマーを気にします。これは、一貫性のあるユーザーエクスペリエンスを提供することになります。そして、ゲームループは、できるだけこのレートでフレームを画面に送ります。 –
はい、それは事実です、私は単純に、より少ないオーバーヘッドを提供するが、使用するのに十分な堅牢性を持つQPC代替品を見つけるために存在する可能なオプションを列挙して、受け入れ可能なゲームのタイミングを許しています。 –