Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro 5] czyszczenie bitmapy z maską

Ostatnio zmodyfikowano 2013-11-04 18:09
Autor Wiadomość
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ą
C/C++
kulki = al_create_bitmap( 200, 200 ); // rozmiar okna
al_convert_mask_to_alpha( kulki, al_map_rgb( 0, 0, 0 ) ); // kolor maski czarny
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
C/C++
al_set_target_bitmap( kulki ); //aktualna bitmapa
al_clear_to_color( al_map_rgb( 0, 0, 0 ) );
...tu wstawiam obrazek
al_set_target_bitmap( al_get_backbuffer( okno ) ); //powrot do okna
 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
C/C++
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?
P-95250
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.
C/C++
ALLEGRO_BITMAP * bufor = al_create_bitmap( 800, 600 );
al_set_target_bitmap( bufor ); //od teraz wszystko wyświetlamy na bitmape.
al_clear_to_color( al_map_rgba_f( 0.0, 0.0, 0.0, 0.0 ) ); //przezroczysta bitmapa bufor.
...
//tu wyświetlasz wszystkie obiekty na bitmape.
...
al_set_target_backbuffer( display ); //powrót do bufora ekranu
al_draw_bitmap( bufor, 0, 0, 0 );
al_flip_display();
P-95253
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.
P-95288
« 1 »
  Strona 1 z 1