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

问题描述 投票:1回答:1

我想绘制非常大量的三角形(最多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中绘制许多基元的最有效方法是什么?

谢谢你的所有答案

performance graphics bitmap drawing allegro5
1个回答
1
投票

al_hold_bitmap_drawing对原始人没有任何作用。 This thread对这个主题进行了一些讨论,包括用suggestion缓冲所有原语并调用al_draw_prim

不同之处在于,在缓冲可能数百个基元之后,我只调用al_draw_prim一次。原始绘图功能每次都会启动批处理。

© www.soinside.com 2019 - 2024. All rights reserved.