2011-04-15 81 views
0

我是allegro和C++的初學者。我正在嘗試使用位圖命令。我用這個簡單的程序來測試它:有問題Allegro位圖命令返回黑屏

#include <allegro.h> 
BITMAP *red; 
int main(){ 
    allegro_init(); 
    install_keyboard(); 
    set_color_depth(32); 
    set_gfx_mode(GFX_AUTODETECT, 640, 480, 0, 0); 
    red = load_bitmap("frago.png", NULL);  
    acquire_screen(); 
    blit(red, screen, 0, 0, 0, 0, 480, 360); 
    release_screen(); 
    readkey(); 
    destroy_bitmap(red); 
    return 0;  
} 
END_OF_MAIN(); 

文件「frago.png」位於我的桌面上,是一個大紅色的矩形。顏色深度32支持。我在Mac上使用Xcode 4。有人能幫我嗎?

回答

0

如果程序未與圖像在同一文件夾中運行,它將找不到圖像。

例如,如果程序在c:\ temp \ MyProgram \中運行,圖像應該位於相同的文件夾中。

此外,有些IDE允許您指定從IDE運行或調試時程序將運行的文件夾,您可以將此路徑設置爲桌面或將圖像複製到程序文件夾。

另一種選擇是在load_bitmap調用中指定完整的圖像路徑,但這是我認爲最糟糕的解決方案,因爲程序只有在圖像完全位於此位置時才起作用。

此外,我建議增加一個檢查空:

red = load_bitmap("frago.png", NULL); 
if(red == NULL) 
{ 
    printf("Cannot load frago.png\n"); 
    return 0; 
} 
+0

我試着用你的第一個建議和檢查null。檢查空作品,讓我離開程序,但它仍然無法加載圖像! – Gabe 2011-04-15 11:50:34

+0

按照我評論的方式檢查程序執行文件夾,並檢查有關png支持的dacap答案。 – bcsanches 2011-04-15 14:32:25

+0

我把文件放在執行文件夾中。 – Gabe 2011-04-15 21:20:17

2

快板庫不能由默認讀取.png文件。你必須使用一些其他庫/插件(libpng,zlib,loadpng)。 loadpng與版本4.3.10中的Allegro捆綁在一起,但是您需要在編譯器中安裝libpng和zlib。

您必須在load_bitmap()之前使用register_png_file_type()。

快板4.4的loadpng插件包含在它的源代碼: https://alleg.svn.sourceforge.net/svnroot/alleg/allegro/branches/4.4/addons/loadpng/

如果PNG是8bpp的圖像,記得要加載的調色板:

PALETTE palette; 
BITMAP* red = load_bitmap("frago.png", palette); 
select_palette(palette); 
blit(red, screen, 0, 0, 0, 0, red->w, red->h); 
unselect_palette(); 

反正我覺得快板應該轉換你的形象32bpp的自動,請嘗試使用set_color_conversion load_bitmap()之前,以防萬一:

set_color_conversion(COLORCONV_TOTAL); 

最後你可以嘗試直接使用load_png()函數(用load_png替換load_bitmap)。

+0

register_png_file_type()不是allegro命令,我有libpng,zlib和loadpng。我也嘗試過.jpg和.bmp。 – Gabe 2011-04-15 21:19:46

+0

register_png_file_type()是loadpng.h中定義的一個函數,你必須#include「loadpng.h」文件。請參閱https://alleg.svn.sourceforge.net/svnroot/alleg/allegro/branches/4.4/addons/loadpng/loadpng.h 也可以直接使用load_png()(而不是register_png_file_type&load_bitmap)。 – dacap 2011-04-15 23:55:48

+0

沒有jpgalleg插件的Allegro不支持jpg格式。你是否將可執行文件與這些插件相鏈接? (loadpng,jpgalleg等)或者你只是與allegro庫連接? (例如只有標誌)。 – dacap 2011-04-15 23:58:54