我使用 C ++ 在代码中使用 SDL2 库制作 2D鸟类观察镜头: :块,使用 MinGW 编译,在 Windows 7 上运行。
一切顺利进行,但我遇到了一个主要问题,我找不到任何有效的解决方案。作为一名射手,鼠标涉及很多,但我永远无法在正确的框架上返回鼠标位置...它似乎总是落后2-5帧。
例如,我需要一个十字线图像始终在(不可见)鼠标上。我知道我可以使用像CreateCursor这样的Mouse函数之一,但我仍然需要准确的坐标,以便不会关闭目标。我使用这样的基本脚本:
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);
}
}
}
现在,如果我在(xMouse-10,yMouse-10)(用于原点的减法)处渲染了一个十字线图像,它将始终跟踪光标。此外,一旦鼠标停止移动,坐标将需要几帧才能停止移动。
为我提供更好的精确鼠标跟踪方法。
P.S。我是C ++和SDL的新手,所以如果你愿意,可以提供任何其他的建议。
答案 0 :(得分:2)
这是一个很长的镜头,但在我的Linux SDL2项目中,我有类似的鼠标延迟,这是由我的渲染器上设置SDL_RENDERER_PRESENTVSYNC标志引起的。删除该标志修复了滞后。可能值得一试。