有没有办法在 SDL 2.0 中获得鼠标的初始位置?我尝试通过SDL_GetMouseState(&mouse_x,&mouse_y)
得到鼠标坐标,但是只有在使用函数SDL_PollEvent()
之后我得到了我预期的结果,而且我也看不到{{1}以外的值如果自程序开始以来鼠标至少没有被移动一次。虽然我没有检查 SDL_MOUSEMOTION 并将(0,0)
连接到它,但我只得到鼠标坐标鼠标移动了。那有什么不对?或SDL_GetMouseState()
是否适合这样做?
编辑:为什么,为什么没有任何答案?
答案 0 :(得分:3)
尝试在SDL_GetMouseState()之前调用SDL_PumpEvents()。
答案 1 :(得分:2)
SDL在SDL_PrivateSendMouseMotion内部更新鼠标的位置,该文件由同一文件中的各种鼠标相关函数调用。
在事件循环处理函数WIN_WindowProc中调用这些函数以响应Windows调度的鼠标事件。
因此,如果您不移动鼠标,则不会调度任何事件,并且SDL不知道鼠标的位置。解决方案是在请求位置之前等待鼠标事件,并找到解决方法直到此事件。
答案 2 :(得分:1)
我知道已经晚了,但我只是想解决我找到的问题。 如果您得到零坐标,请调用 SDL_GetGlobalMouseState(&x, &y),然后通过 window.x 和 window.y 坐标偏移 x 和 y。