当我想使用al_draw_line(100,100,400,400,al_map_rgb(255,255,0),5);
绘制一条线时,我的ALLEGRO_DISPLAY
会自动关闭,并且此行之后的语句不会执行。我的程序暂停了
#include<allegro5/allegro.h>
#include<allegro5/allegro_primitives.h>
int main(){
ALLEGRO_DISPLAY *display=NULL;
if(!al_init()){
return -1;
}
if(!al_init_primitives_addon()){
return -1;
}
display=al_create_display(600,600);
al_draw_line(100,100,400,400,al_map_rgb(0,0,0),3);
al_clear_to_color(al_map_rgb(0,0,0));
al_flip_display();
al_rest(20.0);
al_destroy_display(display);
return 0;
}
答案 0 :(得分:2)
您不会检查可能失败的al_create_display
的返回值。无论如何:我不知道为什么你的程序显然崩溃了(你的代码没有做任何应该崩溃的事情,除了没有检查显示)但你不会看到任何东西,因为你:
进行一些更改后的代码:
#include <allegro5/allegro.h>
#include <allegro5/allegro_primitives.h>
#include <stdio.h>
int main(){
ALLEGRO_DISPLAY *display=NULL;
if(!al_init()){
fprintf(stderr,"Couldn't initialize allegro!\n");
return -1;
}
if(!al_init_primitives_addon()){
fprintf(stderr,"Couldn't initialize primitives addon!\n");
return -1;
}
display=al_create_display(600,600);
if(!display) {
fprintf(stderr,"Couldn't create allegro display!\n");
return -1;
}
al_clear_to_color(al_map_rgb(0,0,0));
al_draw_line(100,100,400,400,al_map_rgb(255,0,0),3);
al_flip_display();
al_rest(1.0);
al_destroy_display(display);
return 0;
}
如果它实际上是你的显示器坏了,你至少应该得到一条错误信息。这对我有用,我不明白为什么它不适合你(除非你尝试在全屏模式下创建它,这将无效)。
答案 1 :(得分:1)
al_draw_line(100,100,400,400,al_map_rgb(0,0,0),3);
al_clear_to_color(al_map_rgb(0,0,0));
这两行是向后的。在绘制线条后,您正在清除(擦拭)显示器。所以你永远不会看到这条线。