1

我正在使用名为 Gameplay 的引擎创建 FPS 演示。我目前正在尝试在引擎中定义一个 captureMouse() 函数,以便玩家可以环顾地图。我已经能够将光标固定到窗口的中心并使其不可见,但是当我移动鼠标时,屏幕(相机)似乎在移动时“振动”。在对 X11 函数进行了大量修改之后,我发现我用来将光标移回窗口中心的 XWarpPointer() 函数正在向事件队列添加一个“鼠标移动”事件。

X11 问题:如何在事件循环捕获事件之前从事件队列中识别和删除事件?

问题:有没有人遇到过类似的问题并以不同的方式解决?如果是这样,你做了什么?

如果我不清楚,我很抱歉。我对 X11 没有广泛的了解,但我确实需要将其添加到引擎中,这样我才能将其添加到我的游戏中。

4

1 回答 1

0

我猜你正在使用 XtAppMainLoop 来处理你的事件。

这实际上是对 XtAppNextEvent 的调用,然后是 XtDispatchEvent。

如果将 XtAppMainLoop 替换为调用 XtAppNextEvent 的循环以获取下一个事件并检查其类型(XEvent 结构的类型字段)。

如果你想处理事件调用 XtDispatchEvent,什么也不做忽略它。

当 XtAppGetExitFlag 返回 true(或添加您自己的退出标志)时,循环需要退出。

于 2013-01-04T09:11:04.397 回答