我目前正在将Breakout版本编码为C和OpenGL的快速学习经验。

我在移动球拍时遇到一些问题。我已经设置了键盘回调,以便在按下左箭头时,它将从拨片上的x值中减去1,并在按下右箭头时将x值加1。

考虑到这一点,当我按住任一键时,拨片的移动速度都非常慢。我可以通过将x值更改为10的数量来更改此设置。当我这样做时,桨似乎在整个屏幕上结结巴巴,因为它一次跳跃了10个。当然,它现在确实可以在屏幕上移动得更快,但看起来并不流畅。

我正在使用GLUT在OSX上开窗。

有没有一种方法可以加快速度并使它看起来平滑?

最佳答案

这是我的一个项目的一些代码:

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;
}


这实际上保留了每个键的状态数组,因此您可以每次检查它们。然后,您不必依赖频繁出现的回调。

关于c - GLUT的GLUT键盘回调问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5411028/

10-11 18:59