2013-06-11 2 views
0

Мой вопрос связан с Allegro 5 C++. Вот некоторые части моего кода, которые должны нарисовать текст на экране. Я сделал все объявления, и ошибка определенно находится в этой части кода.C++ Allegro al_draw_textf()

Так я сначала объявили глобальную переменную 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; 
     } 
    } 

Проблема заключается в том, что это приложение падает на 507 шаге цикла в то время как

+0

Боковое примечание: нет необходимости использовать функции клавиатуры для Windows, когда Allegro предоставляет кросс-платформенные процедуры. – Matthew

ответ

1

Вы инициализирует новый шрифт каждый цикл, в то время как не unallocating ресурс, когда вы закончите с этим.

Вместо этого звоните al_init_ttf_addon и al_load_font только один раз, перед циклом и используйте его в цикле. Не забудьте освободить шрифт, когда вы закончите с ним. Я действительно рекомендую вам позвонить al_init_ttf_addon, когда вы инициализируете программу, другими словами, в функции main, прежде чем вводить цикл событий.