首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ OpenGL乒乓球移动太快

问C++ OpenGL乒乓球移动太快
EN

Stack Overflow用户
提问于 2013-02-19 11:39:44
回答 2查看 1.9K关注 0票数 4

我正在尝试用C++用opengl创建一个简单的乒乓球游戏。我让边框显示在屏幕上,球拍,球,它们都在移动,所以这很棒!问题是,即使在一个像素的速度下,球也会以闪电般的速度移动。

我在一个名为init的回调函数中更新它的位置,然后将其传递给glutIdleFunc,如下所示:glutIdleFunc(idle);

idle函数如下:

代码语言:javascript
复制
void idle(){
    ball.moveLeft();

    glutPostRedisplay();
}

本质上,我只是让它向左移动一个像素,但是,我猜idle被调用了很多,所以它移动得非常快。如何修复此错误?

如果你需要更多的信息,尽管问吧!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-19 11:45:08

使用超量计时器每16毫秒触发一次display()回调:

代码语言:javascript
复制
void timer( int extra )
{
    glutPostRedisplay();
    glutTimerFunc( 16, timer, 0 );
}

int main( int argc, char **argv )
{
    glutInit( &argc, argv );
    glutInitDisplayMode( ... );
    glutInitWindowSize( ... );
    glutCreateWindow( ... );
    ...
    glutTimerFunc( 0, timer, 0 );
    ...
    glutMainLoop();
    return 0;
}
票数 2
EN

Stack Overflow用户

发布于 2013-02-19 11:49:12

这是我找到的一个博客的链接,该博客讨论了如何在glut中获得显示每秒帧数的时间。

http://www.lighthouse3d.com/tutorials/glut-tutorial/frames-per-second/

你需要决定球的速度是多少,以像素/秒为单位。然后将该速度乘以上次更新和当前更新之间经过的秒数。根据博客的说法,你可以通过glutGet(GLUT_ELAPSED_TIME)获得这个。如果这不起作用,谷歌如何在你的平台上找到以毫秒为单位的当前时间。

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14949441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档