[Allegro 5] czyszczenie bitmapy z maską
Ostatnio zmodyfikowano 2013-11-04 18:09
marianekA Temat założony przez niniejszego użytkownika |
[Allegro 5] czyszczenie bitmapy z maską » 2013-11-04 12:13:52 Mam bitmapę z maską kulki = al_create_bitmap( 200, 200 ); al_convert_mask_to_alpha( kulki, al_map_rgb( 0, 0, 0 ) );
na której co chwilę umieszczam inny obrazek a potem pobieram go na ekran, by obrazki nie nakładały się potrzebne czyszczenie tej bitmapy. Gdy użyję takiej formy kodu al_set_target_bitmap( kulki ); al_clear_to_color( al_map_rgb( 0, 0, 0 ) ); ...tu wstawiam obrazek al_set_target_bitmap( al_get_backbuffer( okno ) );
to 'czyści' bitmapę na czarno ale nie ma już przezroczystości, ponowne użycie funkcji al_convert_mask_to_alpha( kulki, al_map_rgb( 0, 0, 0 ) ); daje efekt ale mocno spowalnia działanie programu - nie wiem czemu, ...a taka forma działa płynnie kulki = al_create_bitmap( 200, 200 ); al_set_target_bitmap( kulki ); ...tu wstawiam obrazek al_set_target_bitmap( al_get_backbuffer( okno ) );
ale po jakimś czasie program się wywala bo pewnie już brakuje pamięci. Jak czyścić taki bufor prawidłowo? |
|
Gabes |
» 2013-11-04 14:43:34 Była to odpowiedz na inny temat, ale autor wcześniej podziękował. Domyślnie w Allegro5 wszystko jest wyświetlane do bufora ekranu, ale możesz utworzyć własny bufor z przezroczystej bitmapy z kanałem alfa. ALLEGRO_BITMAP * bufor = al_create_bitmap( 800, 600 ); al_set_target_bitmap( bufor ); al_clear_to_color( al_map_rgba_f( 0.0, 0.0, 0.0, 0.0 ) ); ...
... al_set_target_backbuffer( display ); al_draw_bitmap( bufor, 0, 0, 0 ); al_flip_display(); |
|
marianekA Temat założony przez niniejszego użytkownika |
» 2013-11-04 18:09:16 Gabes, jak zwykle sprowadziłeś mnie na dobrą drogę. Wszystko mam prawie jak u Ciebie... tylko żle czyściłem bitmapę - bo bez kanału alfa teraz jest OK i dziś pójdę wcześniej spać...hehe.
Problem rozwiązany, temat zamykam. |
|
« 1 » |