GLUT中的流体键盘输入?

时间:2013-10-16 05:01:54

标签: c++ opengl animation graphics 2d

我正在使用C ++中的OpenGL开发2D程序。我正在使用Glut键盘功能。它的问题是它一次只能响应一个密钥。

实施例: 当我同时按下向上和向右时,它不会按预期对角移动,而是向上或向右移动。

我的switch语句如下所示:

case GLUT_KEY_UP:     

    f.Move(UP);
    break;

case GLUT_KEY_DOWN: 
    f.Move(DOWN);
    break;

Move()函数可以添加或减去对象的(x,y)值。

我的处理问题(switch语句)?或者Glut的kb功能是否有限?

还有其他方法可以解决这个问题吗?当问题出现在库本身时,我真的不想浪费时间试图解决问题,并且可以在其他地方找到更好的解决方案。

1 个答案:

答案 0 :(得分:3)

这个想法是跟踪按键的状态,而不是在按下按键的瞬间做某事。

我确信其他人可以更好地解释,但基本上,看起来你正在告诉计算机立即在与键对应的方向上移动(例如10个像素)。如果你真的想到它,那么就没有一种可能的对角移动方式,因为这甚至不是计算机所知的概念。

你想要考虑物理学。速度,力(记住,加速度是速度的时间导数,速度是位置的时间导数)。然后,您可以提出一个方案,用于如何为计算机提供任意方向的知识,而不是执行4个单独的硬编码操作。