在 Allegro 5 中绘制许多图元的最快方法

Fastest way to draw many primitives in Allegro 5

我想绘制非常大量的三角形(最多 600000 个)。 我首先做的是:

al_init();
display = al_create_display();

然后遍历我的三角形和

al_draw_triangle(); each one.

我终于做到了

al_flip_display();

虽然这不是很快。我读到它有助于先绘制到暂停的位图,然后将该位图绘制到显示器上。 我尝试按照以下方式(草图)执行此操作:

al_init();
display = al_create_display();
bitmap = al_create_bitmap();
al_set_target_bitmap(bitmap);
al_hold_bitmap_drawing(1);
for every triangle: 
    al_draw_triangle();
al_hold_bitmap_drawing(0);
al_set_target_bitmap(al_get_backbuffer(display));
al_draw_bitmap(bitmap, 0, 0, 0);
al_flip_display();

虽然这与以前的方法一样快。 我怎样才能正确地缓冲我的三角形以减少平局的数量? 在 Allegro 5 中绘制许多基元的最有效方法是什么?

感谢大家的回答

al_hold_bitmap_drawing 对基元没有任何作用。 This thread has some discussion on the topic, including a suggestion 缓冲所有基元并调用 al_draw_prim:

The difference is that I only call al_draw_prim once, after buffering possibly hundreds of primitives. The primitive drawing functions will kick off a batch every time.