我正在使用一个应用程序,该应用程序需要使用 glutTimerFunc() 的 GLUT GUI 在尽可能短的时间内执行引擎:
void SetGLUTTimer(void);
void callback(int value)
{
Engine* pEngine;
pEngine = (Engine*) value;
pEngine->Process();
pEngine->SetGLUTTimer();
}
void Engine::SetGLUTTimer(void)
{
glutTimerFunc(50, callback, (int)this);
}
bool Engine::Run(void)
{
if (m_pViewer != NULL)
m_pViewer->Run();
else
return false;
return true;
}
如果我将时间阈值设置为 1000 毫秒或更多,将定期调用引擎回调,而低于一秒的任何其他时间间隔(如上面的示例中)将导致 GUI 无限期地运行,从不执行引擎 Process() 函数。