Allegro draw_sprite()

时间:2011-04-22 20:28:37

标签: c++ visual-c++ bitmap sprite allegro

我的调试文件夹中有一个名为“x.bmp”的114x114位图,这个简单的代码

#include <allegro.h>

BITMAP *Sprite;

int main(){
    allegro_init();
    install_keyboard();
    set_color_depth(16);
    set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0);

    Sprite = load_bitmap( "x.bmp", NULL);

    acquire_screen();
    draw_sprite(screen, Sprite, 50, 50);
    release_screen();

    readkey();

    return 0;

}   
END_OF_MAIN();

但它冻结了,看起来像这样 Frozen screen

但是,当我通过Windows资源管理器运行AllegroTest.exe文件时,它可以运行...

我正在使用Allegro 4.2.3和MSVC ++ 2008

编辑:这是我在调试输出窗口中获得的有趣内容:

al-gfx INFO: The driver will wait for vsync.
al-gfx INFO: set_gfx_card success for 640x480x16.
Assert failed at line 250 of c:\users\matthew\desktop\allegro\4.2\include\allegro\inline\draw.inlThe thread 'Win32 Thread' (0x137c) has exited with code -805306369 (0xcfffffff).
The thread 'Win32 Thread' (0x25b8) has exited with code -805306369 (0xcfffffff).

c:\ users \ matthew不存在!!!我没有名为matthew的用户?

1 个答案:

答案 0 :(得分:4)

最有可能无法加载位图。

从Visual Studio调试器启动应用程序时,默认工作目录是项目目录。当您通过资源管理器启动应用程序时,工作目录是可执行文件所在的目录。通常,项目目录将是 ... \ SolutionName \ ProjectName \

当您提供相对路径,即x.bmp时,应用程序将在工作目录中搜索它,然后搜索其他一些目录,例如PATH环境变量中列出的目录。如果可能的话,通常最好给出绝对路径。

您的图像文件很可能与可执行文件位于同一目录中,但此目录不是项目目录。