【发布时间】:2014-11-02 23:26:27
【问题描述】:
我是 SDL2 的新手,请原谅我的无知,但是在 SDL2.0.3 中使用相对鼠标模式时,我遇到了奇怪的结果。当我执行SDL_SetRelativeMouseMode(SDL_bool::SDL_true) 时,光标按预期隐藏。在事件循环中,我检查windowEvent.type == SDL_MOUSEMOTION,然后使用windowEvent.motion.xrel/yrel xrel 和yrel 报告从-4 到4 的值,当鼠标甚至没有移动时!此外,实际移动我的鼠标似乎与报告的xrel 和yrel 无关。
我应该采取不同的做法吗?
【问题讨论】:
-
请展示一个重现该行为的最小示例。
-
您是否检查了
SDL_SetRelativeMouseMode的返回值以确保它受支持。如果不支持相对鼠标模式,它将返回 -1。尽管这听起来很愚蠢,但您是否测试过其他鼠标? 8 像素的散布可能是鼠标输入有缺陷的结果。 -
我想我开始明白问题到底是什么了——而且它似乎与鼠标有关。当我使用触控板在笔记本电脑上运行程序时,问题似乎消失了。但是,当我使用我一直在测试的鼠标时,在移动鼠标和让它出现在运动事件中之间存在巨大的延迟。此外,一旦它们出现,程序就会非常缓慢地执行动作。任何想法为什么会这样?我的着色器非常小,所以我不认为这是 GPU 过载问题。
-
您是否有可能每帧只处理一个事件,然后使用 vsync 或以其他方式限制帧速率?这可能会导致积压;你想在循环中执行 SDL_PollEvent 直到它为每一帧返回 false。
标签: sdl-2