Allegro位图命令返回黑屏

| 我是Allegro和C ++的初学者。我正在尝试使用位图命令。我用这个简单的程序来测试它:
#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。有人能帮我吗?     
已邀请:
默认情况下,Allegro库无法读取.png文件。您必须使用其他一些库/插件(libpng,zlib,loadpng)。 loadpng与版本4.3.10的Allegro捆绑在一起,但是您需要在编译器中安装libpng和zlib。 您必须在load_bitmap()之前使用register_png_file_type()。 Allegro 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();
无论如何,我认为Allegro应该将您的图像自动转换为32bpp,请尝试在load_bitmap()之前使用set_color_conversion,以防万一:
set_color_conversion(COLORCONV_TOTAL);
最后,您可以尝试直接使用load_png()函数(用load_png替换load_bitmap)。     
如果程序不在与映像相同的文件夹中运行,它将找不到该映像。 例如,如果程序在c:\\ temp \\ MyProgram \\中运行,则映像应位于此同一文件夹中。 另外,某些IDE允许您指定从IDE运行或调试时程序将运行的文件夹,您可以将此路径设置为桌面或将映像复制到程序文件夹。 另一个选择是在load_bitmap调用中指定完整的图像路径,但是我认为这是最糟糕的解决方案,因为该程序仅在图像恰好位于此位置时才起作用。 我也建议添加一个检查为空:
red = load_bitmap(\"frago.png\", NULL);
if(red == NULL)
{
    printf(\"Cannot load frago.png\\n\");
    return 0;
}
    

要回复问题请先登录注册