невозможно загрузить растровые изображения в Allegro 5 - PullRequest
2 голосов
/ 23 мая 2011

в моем коде у меня есть структура для растровых изображений.

struct bat 
{
 float x;
 float y;
 ALLEGRO_BITMAP *bmp;
};

Существуют функции, которые обрабатывают загрузку и вывод растровых изображений на экран.

ALLEGRO_DISPLAY *display;

bool init_display(void)
{
   puts("-- initializing display. --");
   display = al_create_display(display_width, display_height);
   if(display)
   {
     al_clear_to_color(al_map_rgb(0,0,0));
     queue = al_create_event_queue();
     al_register_event_source(queue, al_get_display_event_source(display));
     if(init_objects()){return true; puts("-- display initialized. --");}
     else return false;
   }
   else return false;
}

bool create_bat(struct bat *bat, float x_coord, float y_coord, const char *path)
{   
    puts("-- creating bat. --");
    bat->x = x_coord;
    bat->y = y_coord; 
    bat->bmp = al_load_bitmap(path);
    if(bat->bmp){puts("-- bat created. --"); return true;}
    else return false;
}

struct bat bat; 

bool init_objects(void)
{
   puts("-- initializing objects. --");
   if(al_init_image_addon())
   {
      al_set_new_bitmap_flags(ALLEGRO_MEMORY_BITMAP);
      al_set_target_backbuffer(display);
      if(!create_bat(&bat, 0, 0, "img.jpg"))
      { puts("-- creating bat failed. --"); return false;}
      puts("-- objects initialized. --"); 
      return true;
   }
else return false;
}

Я всегда получаю этот вывод, когда использую абсолютный путь для загрузки растрового изображения или относительный.

-- initializing display. --
-- initializing objects. --
-- creating bat. --
-- creating bat failed. --

Что я делаю не так? Благодарю. (ОС: Ubuntu 10.10)

Ответы [ 2 ]

1 голос
/ 23 мая 2011

Я думаю, вам нужно установить внешние зависимости, чтобы загрузить образ jpg и связать с ним свой исполняемый файл. В руководстве написано:

Следующие типы встроены в аддон изображений Allegro и гарантированно будут доступны: BMP, PCX, TGA. Каждая платформа также поддерживает JPEG и PNG через внешние зависимости.

См. Это: http://alleg.sourceforge.net/a5docs/5.0.3/image.html

Вам понадобится аддон libjpeg и libjpeg-dev, если у вас его еще нет. Найдите некоторую информацию о различных аддонах здесь:

http://wiki.allegro.cc/index.php?title=Install_Allegro5_From_SVN/Linux/Debian

0 голосов
/ 23 мая 2011

Прежде всего, вам нужно убедиться, что вы скомпилировали дополнение изображения с поддержкой JPEG.На Ubuntu это означает libjpeg-dev.При настройке Allegro с CMake, он сказал бы вам, что поддерживается.Посмотрите на его файл журнала, если вы не помните.

Другая вещь, которая может быть проблематичной - это относительный путь.Вы уверены, что находитесь в правильном месте?Чтобы легко проверить, используйте абсолютный путь, например "/home/me/game/foo.jpg".

...