我有一些从main函数调用的函数.Below是代码。
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutInitWindowSize (500, 500);
glutInitWindowPosition (100, 100);
glutCreateWindow("Game for Gamers");
glutDisplayFunc(display_func);
glutKeyboardFunc(keyboard);
glutSpecialFunc(special);
glutTimerFunc(50,refreshcheck,0);
glutIdleFunc (animate);
glutReshapeFunc (reshape);
glutMainLoop();
return 0;
}
这里“refreshcheck”首先调用我想在执行“display_func”函数后调用“refreshcheck”函数。如何调度它。我想在“refreshcheck”之前将游戏加载到内存中时先调用“display_func”执行函数函数,没有必要在游戏运行时在“display_func”之后调用“refreshcheck”,但这是第一次这很重要。
答案 0 :(得分:1)
一般来说,你不应该在displayFunc中创建对象(正确地指出了dark_charlie)。但这只是不好的做法,仅此而已。
如果你需要碰撞检测,你应该让它与渲染同步,即从你的displayFunc(在它的结尾)调用它。
我想你想使用计时器的原因是要有恒定的步骤物理。这通常以另一种方式完成,使用gettimeofday()(或Windows上的GetTickCount())来获取时间,并且基于帧之间经过的时间,物理被称为N次。这将比使用GLUT定时器获得更好的精度,因为定时器只能精确到10毫秒,这在处理快速移动的物体时可能会很多,导致口吃。