```
while (true)
{
Event* event = waitForEvent();
dispatchEvent(event);
}
while (true)
{
processInput();
update();
render();
}
```
游戏循环在游戏运行期间一直执行,每次循环,会处理用户输入,更新游戏状态,渲染场景等. 记录循环时间,来控制游戏的节奏(rate).
```
\\ 锁定帧率
while (true)
{
double start = getCurrentTime();
processInput();
update();
render();
sleep(start + MS_PER_FRAME - getCurrentTime());
}
\\ elapsed, 帧率不固定, 但是游戏使用时间差来进行更新
\\ 不同的帧率下,物理运动结果是一样的
double lastTime = getCurrentTime();
while (true)
{
double current = getCurrentTime();
double elapsed = current - lastTime;
processInput();
update(elapsed);
render();
lastTime = current;
}
```
```
\\ 定时执行(每隔多少毫秒执行一次),更有效率的模拟物理 ai 等等
double previous = getCurrentTime();
double lag = 0.0;
while (true)
{
double current = getCurrentTime();
double elapsed = current - previous;
previous = current;
lag += elapsed;
processInput();
while (lag >= MS_PER_UPDATE)
{
update();
lag -= MS_PER_UPDATE;
}
render();
// 防止物体跳动
render(lag/MS_PER_UPDATE);
}
```
### power consumption
1 帧率尽量的高. 会带来更好的体验,也会跟耗电, 发热更多
2 限制帧率. 带来足够好的体验,并且降低电量消耗