PNG не загружается с allegro5, но BMP делает - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь узнать, как использовать allegro5, поэтому я установил его из исходного кода на их github, и все шло нормально, пока я не попытался загрузить изображение.Вот мой код, который не работал.

#include<allegro5/allegro.h>
#include<allegro5/allegro_image.h>
#include<stdio.h>

int main(int argc, char **argv){
        al_init();
        al_init_image_addon();
        al_create_display(640,560);

        ALLEGRO_BITMAP * image = al_load_bitmap("pi.png");

        while(true){
                al_clear_to_color(al_map_rgb(100,0,0));
                if(image == NULL){
                        printf("Image didn't load properly\n");
                        return -1;
                }

                al_draw_bitmap(image, 0, 0, 0);
                al_flip_display();
        }
}

Но после создания pi.bmp в том же каталоге и изменения

ALLEGRO_BITMAP * image = al_load_bitmap("pi.png");

на

ALLEGRO_BITMAP * image = al_load_bitmap("pi.bmp");

Работает как положено.У меня уже есть libpng16-16 и libpng-dev.Я компилирую файл (main.cpp) с помощью этой команды:

g++ main.cpp -I/usr/local/include/allegro5 -L/usr/local/lib -lallegro -lallegro_image -lpng

Кто-нибудь знает, что я делаю неправильно?

РЕДАКТИРОВАТЬ: Под неработающим я имею в виду, что image == NULLtrueТакже я просто попытался сделать это на своем ноутбуке.Я считаю, что проблема должна быть где-то с моей установкой.Мой рабочий стол (тот, который не работает) работает под управлением Ubuntu 18.10 (космический), а мой ноутбук работает 18.04 (бионический) и отлично работает после добавления ppa и обновления.Кажется, у них есть только предварительно скомпилированные двоичные файлы для bionic, что и заставило меня скомпилировать из исходного кода.

EDIT2: ответ @ rcorre работал для меня!Надеюсь, это поможет кому-то еще в будущем.При сборке необходимо использовать команду cmake -D WANT_IMAGE_PNG=1 .. из каталога сборки.

...