我正在实现一种FPS风格的鼠标外观,以便在我的场景中“飞行”。
我有正确的相机旋转和一切,我唯一的问题是,当我尝试将鼠标扭曲到屏幕中间时,它会执行多次调用glutPassiveMotionFunc回调。因此,它不是传送鼠标,而是通过一些动作将它移动到那里。这些动作得到处理并将相机移回原位。
如何检查鼠标是否实际移动且未被glutWarpPointer函数触发。
如果指针位于屏幕中间,我试图不处理动作,但这没有帮助。
我希望我的程序在Linux和Windows上运行,因此我无法使用特定于操作系统的功能。
答案 0 :(得分:0)
我不会称这是一个很好的解决方案,但它应该有效:
bool isWarpingPointer = false;
void MyPassiveMovementCallback()
{
if (isWarpingPointer)
{
return;
}
//proceed normally
}
//elsewhere
isWarpingPointer = true;
glutWarpPointer();
isWarpingPointer = false;