[英]GLFW-style infinite mouse movement in SDL2?
GLFW具有的功能完全可以满足我的需求:
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
此功能使鼠标可以自由移动,而不会受限于窗口或屏幕。
我发现的一种解决方案是使用以下命令重置每帧的鼠标位置:
SDL_WarpMouseInWindow(window, defaultMousePositionX, defaultMousePositionY);
但是我仍然想知道SDL2中是否有类似glfwSetInputMode()
东西。
如果需要相对移动,FPS样式,则SDL具有SDL_SetRelativeMouseMode
函数,如此处所示 。 这将强制SDL仅报告运动事件,因此鼠标位置不会改变。
另一种方法是自己跟踪当前位置和下一位置,并手动计算差值,以获取移动的距离。
// Last position
lastX = currX;
lastY = currY;
// Current position
currX = event.motion.x;
currY = event.motion.y;
// Motion
motionX = currX - lastX;
motionY = currY - lastY;
这也可以平滑地转换为其他控制方法,例如模拟摇杆和触摸控制,如果您决定使用其他平台,则可以为您带来更加统一的体验。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.