0

我正在实现一个 FPS 风格的鼠标外观来“飞”在我的场景周围。

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

如何检查鼠标是否实际被移动并且它不是由 glutWarpPointer 函数触发的。

如果指针位于屏幕中间,我尝试不处理移动,但这无济于事。

我希望我的程序在 Linux 和 Windows 上运行,所以我不能使用操作系统特定的功能。

4

1 回答 1

0

我不会称这是一个很好的解决方案,但它应该可以工作:

bool isWarpingPointer = false;

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

    //proceed normally
}

//elsewhere
isWarpingPointer = true;
glutWarpPointer();
isWarpingPointer = false;
于 2013-03-11T18:34:49.303 回答