glutWarpPointer对glutPassiveMotionFunc回调进行多次调用

时间:2013-03-11 17:47:20

标签: c++ graphics 3d glut

我正在实现一种FPS风格的鼠标外观,以便在我的场景中“飞行”。

我有正确的相机旋转和一切,我唯一的问题是,当我尝试将鼠标扭曲到屏幕中间时,它会执行多次调用glutPassiveMotionFunc回调。因此,它不是传送鼠标,而是通过一些动作将它移动到那里。这些动作得到处理并将相机移回原位。

如何检查鼠标是否实际移动且未被glutWarpPointer函数触发。

如果指针位于屏幕中间,我试图不处理动作,但这没有帮助。

我希望我的程序在Linux和Windows上运行,因此我无法使用特定于操作系统的功能。

1 个答案:

答案 0 :(得分:0)

我不会称这是一个很好的解决方案,但它应该有效:

bool isWarpingPointer = false;

void MyPassiveMovementCallback()
{
    if (isWarpingPointer)
    {
        return;
    }

    //proceed normally
}

//elsewhere
isWarpingPointer = true;
glutWarpPointer();
isWarpingPointer = false;