這是我的代碼的遊戲循環和繪圖代碼:動畫閃爍問題
float frames_per_second = 60;
display_timer = al_create_timer(1/frames_per_second);
queue = al_create_event_queue();
al_register_event_source(queue, al_get_timer_event_source(display_timer));
al_start_timer(display_timer);
while(!end_game)
{
ALLEGRO_EVENT event;
al_wait_for_event(queue, &event);
if(event.type == ALLEGRO_EVENT_DISPLAY_CLOSE) break;
if(event.any.source == al_get_timer_event_source(display_timer))
{update_display();}
update_input();
}
void update_display()
{
al_clear_to_color(al_map_rgb(255, 255,255));
draw_objects(); //this is just an al_draw_bitmap() call
al_flip_display();
}
通過在屏幕上移動對象創建動畫閃爍,我很驚訝這個,因爲我寫的後臺緩衝區屏幕因此我期望雙緩衝。我能做些什麼來糾正閃爍?謝謝。
默認情況下它是雙緩衝的。你可以發佈圖紙代碼嗎?你所提供的一點與這個問題無關。 – Matthew 2011-05-25 16:34:54
我已更新帖子。我很好奇,遊戲循環如何不相關?這就是控制屏幕更新的速度,我認爲這必須是更新率問題。 – Findrzkeeprz 2011-05-25 16:46:11
這是無關緊要的,因爲如果它是雙緩衝的,刷新屏幕的速度有多快並不重要,你永遠不會閃爍。而通過閃爍,你的意思是屏幕白色短暫一秒,然後你看到的物體? (與剪切物體顯示的一半剪切相反)。在創建顯示之前,您可能需要嘗試'al_set_new_display_option(ALLEGRO_SINGLE_BUFFER,0,ALLEGRO_REQUIRE);'。 – Matthew 2011-05-25 16:50:35