2

私のコードには、ビットマップの構造体があります。

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. --

私は何を間違っていますか?ありがとう。(OS: Ubuntu 10.10)

4

2 に答える 2

1

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

于 2011-05-23T15:20:17.147 に答える
0

最初に、JPEG をサポートする画像アドオンをコンパイルしたことを確認する必要があります。Ubuntu では、libjpeg-dev を意味します。Allegro を CMake で構成すると、何がサポートされているかがわかります。覚えていない場合は、ログ ファイルを参照してください。

問題になる可能性があるもう 1 つのことは、相対パスです。あなたは正しい場所にいますか?簡単にテストするには、 のような絶対パスを使用します"/home/me/game/foo.jpg"

于 2011-05-23T16:21:13.673 に答える