SDL2鼠标抓取无法正常工作。

5

我曾使用SDL 1.2的SDL_WM_GrabInput函数将(隐藏的)鼠标置于屏幕中心。这为第一人称射击游戏提供了无限自由的转动。然而,SDL2不再提供此功能,取而代之的是SDL_SetWindowGrab。但每次循环(读取事件)后,鼠标似乎没有重新定位到屏幕中央。在鼠标移至窗口边缘后,xrel值将不再产生,玩家只能完成一半的转身。请问这是否为bug?或者我应该使用另一个函数?

1个回答

4

1
我发现在Windows上使用SDL_SetRelativeMouseMode存在问题,所以我采用了将鼠标置于中心的选项。为了完成这篇文章,在主循环结尾使用 SDL_WarpMouseInWindow(win, cw, ch); (cw是中心宽度,ch是中心高度) 将光标置于窗口win的中心。在SDL_MOUSEMOTION事件循环中,我将屏幕中心与鼠标当前位置相减:mouseMovement+=(cw - e.motion.x)。 - ste3e

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接