【发布时间】:2009-07-15 17:49:41
【问题描述】:
我正在使用 wxWidgets 和 OpenGL 创建一个游戏引擎。我正在尝试设置一个计时器,以便可以定期更新游戏。我不想使用 wxTimer,因为它可能不够准确,无法满足我的需要。我正在使用一段时间(true)和 wxStopWatch:
while (true) {
stopWatch.Start();
<handle events> // I need a function for this
game->OnUpdate();
game->Refresh();
if (stopWatch.Time() < 1000 / 60)
wxMilliSleep(1000 / 60 - stopWatch.Time());
}
我需要一个能够处理所有 wxWidgets 事件的函数,因为现在我的应用程序只是冻结了。
更新:它没有。它在 Windows 上有点生涩,在 Mac 上测试时,它非常生涩。显然 EVT_IDLE 在 Windows 上不会被一致地调用,在 Mac 上更是如此。
UPDATE2:实际上大多数情况下确实如此。在 Mac 上没问题;我误解了我的 Mac 测试员的回复。
【问题讨论】: