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

时间:2019-02-27 20:31:06

标签: performance graphics bitmap drawing allegro5

我想绘制很多三角形(最多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中绘制许多基本体的最有效方法是什么?

感谢所有答案

1 个答案:

答案 0 :(得分:1)

al_hold_bitmap_drawing对基元不执行任何操作。 This thread对该主题进行了一些讨论,包括一个suggestion来缓冲所有原语并一次调用al_draw_prim

  

区别在于,在缓冲了可能的数百个基元之后,我仅调用al_draw_prim一次。原始绘图功能每次都会启动一批。