GLUT中的流畅键盘输入

Fluid keyboard input in GLUT?

本文关键字:键盘 输入 GLUT      更新时间:2023-10-16

我正在使用Open C++GL开发一个2D程序。我正在使用 Glut 键盘功能。它的问题在于它一次只能响应一个键。

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

我的 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 个单独的硬编码操作。