Allegro 5游戏:游戏循环以恒定速度运行?

ama*_*ion 5 c multithreading game-loop allegro5

在Allegro 5中编写游戏循环的最佳方法是什么,它始终以相同的速度运行,并且正确地将绘图逻辑与更新逻辑分开?我应该使用线程吗?我应该使用新的Allegro事件系统吗?

小智 4

摘自 allegro 维基:

al_install_timer(1.0 / FPS);

...

while (1) {
        al_wait_for_event(queue, &event);

        /* handle input events */

        if (event.type == ALLEGRO_EVENT_TIMER) {
                handle_game_tick();
                need_redraw = true;
        }

        if (need_redraw && al_event_queue_is_empty(queue)) {
                render_last_frame();
                need_redraw = false;
        }
}
Run Code Online (Sandbox Code Playgroud)

如果您想要跳帧,请在检测到帧落后时跳过 render_last_frame() 命令(例如,通过使用 al_current_time() 函数)。