BSa*_*uke 4 c++ mouse sdl mouseevent sdl-2
我正在使用Code::Blocks中的SDL2库用C++制作一个2D 鸟瞰图射击游戏,用MinGW编译,在Windows 7上运行。
一切进展顺利,但我遇到了一个大问题,而且我一直无法找到任何可行的解决方案。作为一名射击游戏,鼠标涉及很多,但我永远无法将鼠标位置返回到精确的正确帧......它似乎总是落后大约 2-5 帧。
例如,我需要一个十字线图像始终位于(不可见的)鼠标上。我知道我可以只使用像 CreateCursor 这样的鼠标功能之一,但我仍然需要准确的坐标,这样才不会偏离目标。我正在使用这样的基本脚本:
bool quit = false;
SDL_Event e;
int xMouse, yMouse;
while(quit == false)
{
while(SDL_PollEvent(&e) != 0)
{
if(e.type == SDL_MOUSEMOTION)
{
SDL_GetGlobalMouseState(&xMouse,&yMouse);
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我在 (xMouse-10, yMouse-10) 渲染十字线图像(用于原点的减法),它将始终落后于光标。此外,一旦鼠标已经停止移动,坐标将需要几帧才能停止移动。
为我提供一种更好的精确鼠标跟踪方法。
PS 我对 C++ 和 SDL 还很陌生,所以如果您愿意,请提供任何其他建议。
这有点遥远,但在我的 Linux SDL2 项目中,我也有类似的鼠标延迟,这是由于在渲染器上设置 SDL_RENDERER_PRESENTVSYNC 标志造成的。删除该标志修复了延迟。可能值得尝试。