steckel Temat założony przez niniejszego użytkownika |
[Allegro 5] Kopiowanie bitmapy » 2010-02-24 21:51:29 Witam! Chciałbym skopiować bitmapę (stworzyć nowy, identyczny obiekt, a nie skopiować jego wskaźnik), lecz niestety nie wiem jak. W sposób przedstawiony poniżej kopiuję tylko wskaźnik bitmapy: static void Wyswietl( ALLEGRO_BITMAP * bitmap, int x, int y ) { ALLEGRO_BITMAP * grafika = bitmap; al_convert_mask_to_alpha( grafika, al_map_rgb( 255, 0, 255 ) ); al_draw_bitmap( grafika, x, y, 0 ); }
|
|
Elaine |
» 2010-02-24 22:14:25 al_clone_bitmap
Na przyszłość sprawdzaj w dokumentacji... Nie wiem praktycznie nic o Allegro, a mimo to znalazłem to w dwie minuty... |
|
steckel Temat założony przez niniejszego użytkownika |
» 2010-02-24 23:01:53 To nie działa: ALLEGRO_BITMAP * grafika = al_clone_bitmap( bitmap ); al_convert_mask_to_alpha( grafika, al_map_rgb( 255, 0, 255 ) ); al_draw_bitmap( grafika, x, y, 0 ); al_destroy_bitmap( grafika );
screenAdres zmiennej 'grafika' wynosi '0x00000000'. |
|
Elaine |
» 2010-02-24 23:59:44 W debug logu widać informację o niezłapanym wyjątku - powiedz, co to za jeden. Jeśli nie podasz pełnych informacji o błędzie, to ciężko będzie go naprawić. |
|
steckel Temat założony przez niniejszego użytkownika |
» 2010-02-25 13:11:23 Chodzi ci o komunikat? Jeśli nie to jak włączyć Debug Log? |
|
DejaVu |
» 2010-02-25 16:10:32 Wiersz w którym jest strzałka jeszcze się nie wykonał (co najwyżej jego część), więc zmienna grafika ma wartość NULL.
/edit: Jeśli cokolwiek poszło w kosmos to funkcja al_clone_bitmap. Adres pamięci dla zmiennej bitmap nic dobrego nie wróży i postawiłbym raczej pytanie czy jest ta zmienna prawidłowo zainicjalizowana.
/edit2: Jeśli linkujesz allegro dynamicznie to być może nie masz wszystkich dll'ek w odpowiednim miejscu, więc może Ci krzyczeć również, że nie może wywołać tej funkcji. To też jest jakaś opcja.
/edit3: Widząc tego screena to mimo wszystko postawiłbym na wersję z niepoprawnymi danymi w bitmap. |
|
Elaine |
» 2010-02-25 16:28:58 Adres pamięci dla zmiennej bitmap nic dobrego nie wróży |
Taaa - jeśli tylko nie grzebał w ustawieniach linkera, to wartość argumentu bitmap jest równa image base, a z tego wiele dobrego nie wyjdzie, bo wychodzi na to, że zamiast bitmapy czyta nagłówki MZ/PE... |
|
steckel Temat założony przez niniejszego użytkownika |
» 2010-02-25 17:04:56 Faktycznie! Problem był z inicjalizacją: ALLEGRO_BITMAP * bit = al_load_bitmap( "tapeta.jpg" ); while( !all.Wcisniety( ALLEGRO_KEY_ESCAPE ) ) { Wyswietl( bit, 0, 0 ); all.Pokaz(); }
Musiałem zmienić format rysunku z 'jpg' na 'png'. Dziwne, że nie chciało mi czytać formatu 'jpg' nawt za pomocą funkcji 'al_load_jpg'. Dzięki za wskazówki :) |
|
« 1 » |