Autor Wątek: ALLEGRO5 bitmap[]  (Przeczytany 1807 razy)

Offline P@tyS

  • Użytkownik
    • Patys coding

# Lipiec 09, 2013, 12:33:14
Witam.
Otóż mam problem z wyświetlaniem bitmapy z tablicy. Całość trzymam w klasie Map. Fragmenty kodu:
//tablica bitmap
ALLEGRO_BITMAP* bitmap[100];

//funkcja ladujaca tekstury
void LoadRes(char* filename_res)
    {
        config_map = al_load_config_file(filename_res);
        if(!config_map)
            printf("nie zaladowano configa");
        bitmap[0]=al_load_bitmap( al_get_config_value(config_map, "", "res0") );
        bitmap[1]=al_load_bitmap( al_get_config_value(config_map, "", "res1") );
        bitmap[2]=al_load_bitmap( al_get_config_value(config_map, "", "res2") );

    }

//petla do wyswietlania mapy
for(int a=0;a<x_tiles;a++)
        {
            for(int b=0;b<y_tiles;b++)
            {
                if(array_map[a][b]==0)
                {
                    al_draw_bitmap(bitmap[0],b *size_tile +xOff,a * size_tile +yOff,0);
                }
                else if(array_map[a][b]==1)
                {
                    al_draw_bitmap(bitmap[1],b *size_tile +xOff,a * size_tile +yOff,0);
                }
                else if(array_map[a][b]==2)
                {
                    al_draw_bitmap(bitmap[2],b *size_tile +xOff,a * size_tile +yOff,0);
                }
            }
        }

Program się poprawnie kompiluje, ale w konsoli wyskakuje błąd:

Assertion failed: bitmap, file D:\Libraries\build\allegro\src\allegro-git\allegr
o-git\src\bitmap_draw.c, line 137

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

Process returned 3 (0x3)   execution time : 0.594 s
Press any key to continue.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline P@tyS

  • Użytkownik
    • Patys coding

# Lipiec 09, 2013, 12:43:31
ALLEGRO_BITMAP* bitmap[100];

Offline hfjh

  • Użytkownik

# Lipiec 09, 2013, 13:07:01
Sądząc po numerach linii masz starszą wersję Allegro, ale prawie na pewno chodzi o tę asercję:
http://sourceforge.net/p/alleg/allegro/ci/5.0/tree/src/bitmap_draw.c#l138
Makro ASSERT crashuje program, kiedy wartość argumentu jest równa false, czyli kiedy wskaźnik jest zerowy.

Offline P@tyS

  • Użytkownik
    • Patys coding

# Lipiec 09, 2013, 13:27:36
Moja wersja allegro to 5.0.9

Rzeczywiście program zwraca 0 dla bitmapy.
void LoadRes(char* filename_res)
    {
        config_map = al_load_config_file(filename_res);
        if(!config_map)
            printf("nie zaladowano configa");
        bitmap[0]=al_load_bitmap( "data/gfx/grass.png" );
        if(!bitmap[0])
            printf("Blad ladowania bitampy0");
        bitmap[1]=al_load_bitmap( al_get_config_value(config_map, "", "res1") );
        if(!bitmap[1])
            printf("Blad ladowania bitampy1");
        bitmap[2]=al_load_bitmap( al_get_config_value(config_map, "", "res2") );
        if(!bitmap[2])
            printf("Blad ladowania bitampy2");
    }

Dlaczego nie mogę załadować bitmapy. Ścieżka do pliku jest dobrze ustawiona.

Offline P@tyS

  • Użytkownik
    • Patys coding

# Lipiec 09, 2013, 14:01:46
Dobra. Znalazłem.
trzeba dodać
#include <allegro5/allegro_image.h>
...
al_init_image_addon();

*do zamknięcia :D