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

[Allegro 5] Kopiowanie bitmapy

Ostatnio zmodyfikowano 2010-02-25 17:04
Autor Wiadomość
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:
C/C++
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 );
}
P-14145
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...
P-14148
steckel
Temat założony przez niniejszego użytkownika
» 2010-02-24 23:01:53
To nie działa:
C/C++
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 );
screen
Adres zmiennej 'grafika' wynosi '0x00000000'.
P-14149
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ć.
P-14150
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?
P-14163
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.
P-14167
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...
P-14169
steckel
Temat założony przez niniejszego użytkownika
» 2010-02-25 17:04:56
Faktycznie! Problem był z inicjalizacją:
C/C++
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 :)
P-14172
« 1 »
  Strona 1 z 1