gpt4 book ai didi

c++ - ALLEGRO 中 al_draw_line() 失败

转载 作者:搜寻专家 更新时间:2023-10-31 01:50:39 26 4
gpt4 key购买 nike

当我想使用 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;
}

最佳答案

您不检查 al_create_display 的返回值,这可能会失败。无论如何:我不知道为什么你的程序明显崩溃(你的代码没有做任何应该崩溃的事情,除了不检查显示)但你不会看到任何东西,因为你:

  • A) 用相同的颜色(黑色)绘制线条和背景
  • B) 绘制线条后清除背景颜色(因此过度绘制)。

修改后的代码:

#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;
}

如果实际上是您的显示器坏了,您现在至少应该收到一条错误消息。虽然这对我有用,但我不明白为什么它不适合你(除非你尝试在全屏模式下创建它,这是行不通的)。

关于c++ - ALLEGRO 中 al_draw_line() 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14808058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com