我的问题与Allegro 5 C ++有关。这是我的代码的某些部分,必须在屏幕上绘制文本。我已经完成了所有声明,并且错误肯定在代码的这一部分。

所以首先我声明了一个全局变量ALLEGRO_FONT * font;
我已经在主al_init_font_addon();中调用了此函数

这是另一个绘制文本的函数。


    void draw (){
        int score=0 ;
        while (!GetAsyncKeyState(VK_ESCAPE)){
          al_clear_to_color(al_map_rgb( 0 , 0 , 0));
          al_init_ttf_addon();
          font = al_load_font ("font.ttf" , 24 , NULL);
          al_draw_textf(font , al_map_rgb(255 , 0 , 255) , 200 , 200 , ALLEGRO_ALIGN_CENTRE   , "SCORE: %d" , score );
          al_flip_display();
          score +=10;
        }
    }



问题是此应用在while循环的507步骤崩溃

最佳答案

您将在每个循环中初始化一个新字体,而在使用完该字体后不会取消分配资源。

而是在循环之前仅调用一次al_init_ttf_addonal_load_font,并在循环中使用它。完成操作后,请记住要释放字体。我实际上建议您在初始化程序时调用al_init_ttf_addon,换句话说,在进入事件循环之前在main函数中调用。

关于c++ - C++ Allegro al_draw_textf(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17050238/

10-13 08:09