1

プログラムで 0 ~ 2% の CPU のみを使用するようにすると (CPU を集中的に使用する OpenGL 関数を削除)、マウスの座標が遅くなり始めます。CPU を 100% 使用すると (opengl 関数を有効にすると)、マウス座標が滑らかになります。opengl 関数はマウス座標に対して何もしないことに注意してください。下の画像を見てください。マウス座標を使用して回転関数の値を記録しました。

これは 100% の CPU 使用率です (見た目どおり): ラグはありません http://img15.imageshack.us/img15/1304/mousecursorsmoothcoords.png

-

これは 2% の CPU 使用率です: ラグ http://img5.imageshack.us/img5/5514/mousecursorlaggedcoords.png

マウスカーソルの位置を使用して回転角度を変更しているため、これは非常に厄介な問題であり、上記の画像の場合、回転が非常に遅れているように見えます。

独自の補間などを作成できるかもしれませんが、これの原因と修正方法を知りたいです。

WM_MOUSEMOVE メッセージでマウス座標を取得し、回転コードの前にすべてのフレームで GetCursorPos() を使用しようとしましたが、違いはありません。

編集:スムーズにするために CPU 使用率が 100% である必要はないことに気付きましたが、CPU を「ウェイクアップ」するだけで、CPU 使用率が低くてもスムーズに維持されます。

4

2 に答える 2

1

2 番目のグラフは、更新を「束ねている」ようです。Y 軸のジャンプは、X 軸の固定周波数にあるようです。

投機:

  • 節電により、CPU が低電力状態に切り替えられている可能性があります。これはラップトップですか、それとも Windows/BIOS で CPU 省電力が有効になっていますか (設定がどこにあるのかわかりません)。
  • GMan がコメントで示唆したように、アプリが取得するタイムスライスの数に関係している可能性があります
  • ある種のスリープ/タイマー機能が、より低い解像度に後退しています。例として、timeGetTime() と queryPerformanceCounter() の違いがあります: http://www.geisswerks.com/ryan/FAQS/timing.html
于 2010-02-06T02:52:56.647 に答える
0

GetMouseMovePointsEx()APIを使用すると、マウスの動きに関するより良い情報を取得できる場合があります。


補足: 何らかの理由で、最初のグラフィックしか表示されません

于 2010-02-06T18:15:14.753 に答える