GLUT中的流体键盘输入? 我在C++中用OpenGL开发了一个2D程序。我正在使用Glut键盘功能。它的问题是一次只能响应一个键

GLUT中的流体键盘输入? 我在C++中用OpenGL开发了一个2D程序。我正在使用Glut键盘功能。它的问题是一次只能响应一个键,c++,opengl,animation,graphics,2d,C++,Opengl,Animation,Graphics,2d,例如: 当我同时向上和向右按时,它不会按预期的对角线方向移动,而是向上或向右移动 我的switch语句如下所示: case GLUT_KEY_UP: f.Move(UP); break; case GLUT_KEY_DOWN: f.Move(DOWN); break; Move()函数用于添加或减去对象的(x,y)值 我的处理(switch语句)有问题吗?还是Glut的kb功能只是有限的 还有别的办法吗?我真的不想浪费时间试图找出问题出在库中,而

例如: 当我同时向上和向右按时,它不会按预期的对角线方向移动,而是向上或向右移动

我的switch语句如下所示:

case GLUT_KEY_UP:     

    f.Move(UP);
    break;

case GLUT_KEY_DOWN: 
    f.Move(DOWN);
    break;
Move()
函数用于添加或减去对象的(x,y)值

我的处理(switch语句)有问题吗?还是Glut的kb功能只是有限的


还有别的办法吗?我真的不想浪费时间试图找出问题出在库中,而在其他地方可以找到更好的解决方案。

这样做的目的是跟踪按键的状态,而不是在按下按键时立即采取行动

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


你想想想物理。速度,力(记住,加速度是速度的时间导数,速度是位置的时间导数)。然后,你可以想出一个方案,让计算机了解任意方向,而不是执行4个单独的硬编码操作。

为什么会有人投票反对?多么愚蠢的失败者。现在,现在。这样的评论不会为你赢得更多的选票。或者在这件事上除了更多的反对票之外的任何事情。@Hex4869:也许他们有一种想法,就是把什么东西溅到键盘上。。。这是我读标题时想到的第一件事,尽管我知道得更多;)哈哈,“流体”听起来确实是个糟糕的词。谢谢。是的,现在我喝了咖啡,花了一些时间思考,似乎我的逻辑或处理方法有点缺陷。我想我现在有个主意了。