C++OpenGL乒乓球移动过快
C++ OpenGL Pong ball moving too fast
我试图用opengl在C++中创建一个简单的乒乓球游戏。我的边界显示在屏幕上,球拍,球,所有这些都在移动,所以这太棒了!问题是,即使以一个像素的速度,球也会以闪电般的速度移动。
我在一个名为init的回调函数中更新它的位置,然后将其传递到glutIdleFunc中,如下所示:glutIdleFunc(idle);
空闲功能如下:
void idle(){
ball.moveLeft();
glutPostRedisplay();
}
本质上,我只是让它向左移动一个像素,但是,我想空闲被调用了很多,所以它移动得很快。如何修复此错误?
如果您需要更多信息,只需询问即可!
使用GLUT计时器每16毫秒启动一次display()
回调:
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;
}
这是我找到的一个博客链接,该博客讨论了如何利用过剩的时间来显示每秒帧数。
http://www.lighthouse3d.com/tutorials/glut-tutorial/frames-per-second/
你需要决定你的球的速度是多少像素/秒。然后将该速度乘以从上次更新&当前更新。根据博客,你可以通过glutGet(GLUT_ELAPESD_TIME)获得这个。如果这不起作用,谷歌一下如何在你的平台上找到以毫秒为单位的当前时间。
希望这能有所帮助。
相关文章:
- 将对象移动到std::shared_ptr
- 何时在引用或唯一指针上使用移动语义
- 如何从具有移动语义的类对象中生成共享指针
- 将shared_ptr移动到<StructA>shared_ptr<变体<结构A、结构 B>>
- C / C++ 移位/偏移/向左或向右移动位图?
- MSVC将仅移动结构参数解释为指针
- 自定义先决条件对移动分配运算符有效吗
- 返回值优化:显式移动还是隐式
- 当有分配器意识的容器被复制/移动时,反弹分配器是否被复制/移走
- 为什么复制而不是移动数据元素?
- 可以使用移动语义更改或改进此C++代码吗?
- 使lambda不可复制/不可移动
- c++在使用指针时移动语义
- 将QGraphicsItem的移动区域限制在多边形区域内
- SendInput()鼠标移动计算
- 按值 C++ 返回时进行双倍移动
- 移动二维数组中的字符
- 为什么不调用移动构造函数?(默认情况下只有构造器,没有别的)
- 安全到标准:移动会员?
- C++OpenGL乒乓球移动过快