GLFW的功能完全符合我的需要:
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
此功能可让鼠标自由移动,而不会受到窗口或屏幕的限制。
我找到的一个解决方案是使用以下方法重置每帧的鼠标位置:
SDL_WarpMouseInWindow(window, defaultMousePositionX, defaultMousePositionY);
但我仍然想知道SDL2中是否有类似glfwSetInputMode()
的内容。
答案 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;
这也可以平滑地转换为其他控制方法,如模拟棒和触摸控制,如果您决定使用其他平台,可以提供更加统一的体验。