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