繁体   English   中英

SDL2中的GLFW样式的无限鼠标移动?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM