【问题标题】:Move mouse without glutWarpPointer在没有 glutWarpPointer 的情况下移动鼠标
【发布时间】:2011-12-20 07:28:12
【问题描述】:

我正在尝试通过我的 OpenGL 应用程序中的 gluLookAt 移动相机,类似于相机在 FPS 游戏中的移动方式。它可以工作,但是,我想在移动鼠标后将鼠标居中,以禁止鼠标到达屏幕边缘。在做了一些研究之后,我发现 glutWarpPointer 是一个可行的选择,但是,我觉得专业游戏开发人员只使用基本的 OpenGL 命令,而不是像 glutWarpPointer、或 glutSolidCube 或 glutSolidSphere 之类的东西。我的假设是否正确?

在我的 WndProc 函数中,我在我的 switch 块中的 WM_MOUSEMOVE 消息下设置了我的 gluLookAt 的外观。我也意识到 SendInput 会实现我想要的,但据我了解,当光标移动到屏幕中间时,SendInput 会触发另一个 WM_MOUSEMOVE,基本上反转了我原来的鼠标移动,并且根本不移动相机的外观。

有什么想法吗?

编辑:我认为不存在不调用 WM_MOUSEMOVE 消息的函数。我认为正确的方法是创建一个标志来确定 WM_MOUSEMOVE 是否由 SetCursorPos 调用,如果是,请不要更改相机的外观。

【问题讨论】:

  • 等等,如果你正在考虑使用 GLUT,为什么还要有 WndProc?
  • 我不想使用 GLUT,只是简单的 OpenGL。
  • 你读过我的帖子吗?我不想使用 glutWarpPointer

标签: c++ winapi glut


【解决方案1】:

如果您使用的是 Windows,请使用 SetCursorPos 重新定位鼠标光标。

【讨论】:

  • 这实际上调用了 WM_MOUSEMOVE 消息。虽然这是一个很好的建议,但我会将其标记为已接受,因为它确实有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多