1

当我让我的程序只使用 0-2% cpu(删除了一些 CPU 密集型 opengl 函数)时,我的鼠标坐标开始滞后!当我使用 100% CPU(启用 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

您的第二张图似乎是“捆绑”更新。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 回答