根据http://www.gameres.com/200161.html学习使用allegro库
在qt下运行,代码如下:
#include
#include
#include
#pragma comment(lib,"allegro-5.0.7-mt-debug.lib")
#pragma comment(lib,"allegro_image-5.0.7-mt-debug.lib")
int game_init();
int game_run();
int game_frame();
int game_render();
int game_destroy();
int game_msg();
const int WIN_WIDTH =800;
const int WIN_HEIGHT =600;
ALLEGRO_DISPLAY *display;
ALLEGRO_EVENT_QUEUE *queue;
ALLEGRO_EVENT my_event;
ALLEGRO_BITMAP *bmp = 0;
int main()
{
int error = 0;
error = game_init();
if(error!=0)
return error;
error = game_run();
if(error!=0)
return error;
error = game_destroy();
if(error!=0)
return error;
return 0;
}
int game_init()
{
if(!al_init())
return 1;
al_install_mouse();
al_install_keyboard();
al_init_image_addon();
//al_set_new_display_flags(ALLEGRO_FULLSCREEN);
display = al_create_display(WIN_WIDTH,WIN_HEIGHT);
if(!display)
return 2;
bmp = al_load_bitmap("bmp.jpg");
if(!bmp)
return 3;
queue = al_create_event_queue();
al_register_event_source(queue,al_get_keyboard_event_source());
al_register_event_source(queue,al_get_display_event_source(display));
return 0;
}
int game_msg()
{
al_wait_for_event(queue,&my_event);
/* 函数原型
void al_wait_for_event(ALLEGRO_EVENT_QUEUE *queue,ALLEGRO_EVENT *ret_event)
等到队列里有新事件时,将新事件的内容复制到 ret_event里,并从事件队列里移除它
*/
if(my_event.type==ALLEGRO_EVENT_DISPLAY_CLOSE)
return 98;
if(my_event.type == ALLEGRO_EVENT_KEY_CHAR){
if(my_event.keyboard.keycode == ALLEGRO_KEY_ESCAPE)
return 99;
}
return 0;
}
int game_frame()
{
return 0;
}
int game_render()
{
al_clear_to_color(al_map_rgb(0,0,0));
al_draw_bitmap(bmp,0,0,0);
al_flip_display();
return 0;
}
int game_run()
{
double t_now = 0.0;
double t_pre = 0.0;
int error = 0;
while(true)
{
if(!al_is_event_queue_empty(queue)){
error = game_msg();
if(error!=0)
return error;
}
else{
t_now = al_get_time();
if(t_now-t_pre>=0.033){
error = game_frame();
if(error!=0)
return error;
error = game_render();
if(error!=0)
return error;
t_pre = t_now;
}
}
}
return 0;
}
int game_destroy()
{
al_destroy_bitmap(bmp);
return 0;
}
显示:
collect2错误:ld返回一
请问是什么原因?
在linux的vim下可运行,但是图片无法显示,程序框闪退(不知道图片该保存在哪。。我把图片保存在和程序一个文件夹下面)
求大神解答一下!谢谢!