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

最佳答案

来自Allegro Wiki:

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;
        }
}

如果要跳帧,请每当检测到帧落后时都跳过render_last_frame()命令(例如,使用al_current_time()函数)。

关于c - Allegro 5游戏: game loop that runs at constant speed?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1212046/

10-13 05:36