C语言C键盘回调问题

时间:2011-03-23 20:11:33

标签: c opengl glut breakout

我目前正在编写一个突破版本作为C和OpenGL的快速学习体验。

我在移动球拍时遇到了一些问题。我设置了键盘回调,这样当按下左箭头时,它会从挡板上的x值中减去1,并在按下右箭头时将x值加1。

考虑到这一点,当我按住任意一个键时,拨片移动得非常慢。我可以通过增加x值更改为10的数量来更改此值。当我这样做时,桨似乎在屏幕上断断续续,因为它一次跳10个。它当然沿着屏幕移动得更快但看起来并不平滑。

我正在使用GLUT在OSX上进行窗口化。

有没有办法加快速度并使其保持平稳?

2 个答案:

答案 0 :(得分:2)

游戏中常见的是键盘阵列。因此,您也可以一次按几个按钮。

你有一个数组,你保持键的状态(你按下时放1,释放时设置0)。并且您只需从数组中获取信息,而不是直接从输入中获取信息,从而处理每个帧中的游戏。

答案 1 :(得分:0)

以下是我的一个项目中的一些代码:

bool keyDown[256];

...

//Called when a key is pressed
void handleKeypress(unsigned char key, int x, int y) {  
    keyDown[key] = true;
}

void handleKeyUp(unsigned char key, int x, int y){
    keyDown[key] = false;
}

这基本上保留了每个键的状态数组,因此您每次都可以检查它们。然后你不必经常依赖回调。