【发布时间】: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