C ++ SDL2无延迟地获取鼠标坐标

时间:2014-08-07 03:08:37

标签: c++ mouseevent mouse sdl sdl-2

我使用 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的新手,所以如果你愿意,可以提供任何其他的建议。

1 个答案:

答案 0 :(得分:2)

这是一个很长的镜头,但在我的Linux SDL2项目中,我有类似的鼠标延迟,这是由我的渲染器上设置SDL_RENDERER_PRESENTVSYNC标志引起的。删除该标志修复了滞后。可能值得一试。