SDL2中的GLFW风格无限鼠标移动?

时间:2017-11-06 14:50:06

标签: c++ sdl-2 glfw

GLFW的功能完全符合我的需要:

glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);

此功能可让鼠标自由移动,而不会受到窗口或屏幕的限制。

我找到的一个解决方案是使用以下方法重置每帧的鼠标位置:

 SDL_WarpMouseInWindow(window, defaultMousePositionX, defaultMousePositionY);

但我仍然想知道SDL2中是否有类似glfwSetInputMode()的内容。

1 个答案:

答案 0 :(得分:0)

如果您需要相对移动,FPS样式,SDL具有SDL_SetRelativeMouseMode函数as seen here。这会强制SDL仅报告运动事件,因此鼠标位置不会改变。

另一种方法是自己跟踪当前和下一个位置并手动计算差异,以移动距离。

// Last position
lastX = currX;
lastY = currY;

// Current position
currX = event.motion.x;
currY = event.motion.y;

// Motion
motionX = currX - lastX;
motionY = currY - lastY;

这也可以平滑地转换为其他控制方法,如模拟棒和触摸控制,如果您决定使用其他平台,可以提供更加统一的体验。