Я пишу игру в allegro и хотел бы загрузить некоторые файлы изображений. Однако, когда я вызываю al_load_bitmap, я получаю нулевой указатель. Я использую XCode 4.1 в качестве моей IDE. Я бы попробовал компиляцию с помощью g ++ (в случае, если это проблема пути), однако я не знаю, что мне нужно сделать, чтобы скомпилировать его в командной строке с g ++ (просто g ++ main.cpp не работает). В любом случае, вот мой код:Загрузка .png Файл изображения с Allegro 5
ALLEGRO_PATH *path = al_get_standard_path(ALLEGRO_RESOURCES_PATH);
for (int i = 0; i < NUM_TILES; i++)
{
switch (static_cast<Tile>(i)) {
case GRASS:
al_set_path_filename(path, "grass.png");
tileFiles[i] = al_load_bitmap(al_path_cstr(path, '/'));
if (!tileFiles[i])
{
std::cerr<<"grass.png not initialized"<<std::endl;
}
break;
case DIRT:
al_set_path_filename(path, "dirt.png");
tileFiles[i] = al_load_bitmap(al_path_cstr(path, '/'));
if (!tileFiles[i])
{
std::cerr<<"dirt.png not initialized"<<std::endl;
}
break;
default:
std::cerr
<< "Missing case statement for datatype Tile numbered at "
<< i
<< " in Board::Board (float mw, float mh, int tst)"
<< " declared in Board.cpp."
<< std::endl;
break;
}
}
Я уже запускали:
if(!al_init_image_addon()) {
al_show_native_message_box(display, "Error", "Error", "Failed to initialize al_init_image_addon!",
NULL, ALLEGRO_MESSAGEBOX_ERROR);
return -1;
}
и я также поставил:
#include "allegro5/allegro_image.h"
#include "allegro5/allegro_native_dialog.h"
в верхней части моего файла. Ни grass.png, ни dirt.png не загружаются, и они находятся в том же каталоге, что и файл main.cpp. Я не получаю ошибок компиляции, но я постоянно получаю нулевой указатель, когда пытаюсь загрузить мои изображения, поэтому, когда приходит время нарисовать их на дисплее, они не отображаются. Пожалуйста помоги!
Когда изображение не загружается, возможно, вы можете проверить ['allegro_error'] (http://alleg.sourceforge.net/stabledocs/en/alleg000.html#allegro_error), чтобы узнать, что не так? –
Что значит проверить allegro_error? – user1413793
Если вы перейдете по ссылке, вы увидите, что 'allegro_error' - строковая переменная, которая может содержать сообщение об ошибке, которое может быть напечатано. –