【问题标题】:Fastest way to draw many primitives in Allegro 5在 Allegro 5 中绘制许多图元的最快方法
【发布时间】:2019-07-21 16:16:38
【问题描述】:

我想绘制大量的三角形(最多 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】:

    al_hold_bitmap_drawing 对原语没有任何作用。 This thread 有一些关于该主题的讨论,包括一个 suggestion 来缓冲你所有的原语并调用 al_draw_prim

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

    【讨论】:

    • 谢谢,我会尝试使用顶点缓冲区
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 2020-12-22
    • 2011-11-29
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多