Самый быстрый способ нарисовать много примитивов в Аллегро 5 - PullRequest
0 голосов
/ 27 февраля 2019

Я хочу нарисовать очень большое количество треугольников (до 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 голосов
/ 28 февраля 2019

al_hold_bitmap_drawing ничего не делает для примитивов. В этой теме обсуждается эта тема, в том числе предложение для буферизации всех ваших примитивов и одного вызова al_draw_prim:

Разницав том, что я вызываю al_draw_prim только один раз, после буферизации, возможно, сотен примитивов.Примитивные функции рисования будут запускать партию каждый раз.

...