Я хочу иметь возможность динамически изменять размер текста, который я выводил на экран с моим объектом TTF_Font *. То, как я делаю это прямо сейчас, я закрываю шрифт
TTF_CloseFont(font);
, а затем просто откройте его сразу после использования нового размера точки
font = TTF_OpenFont(filepath, new_pointsize);
Теперь мой вопрос: эффективный ли это способ делать вещи? Означает ли это, что каждый раз, когда я перезагружаю свой шрифт, меняя размер точек, я удаляю структуру моего шрифта в памяти, а затем создается новая, то есть я снова читаю весь файл с диска?
Теперь, чтобы сделать его более эффективным, я бы хотел как-то сохранить мой .ttf-файл в памяти и просто изменить его размер. Это возможно?
Я пытался что-то сделать с SDL_RWops
, но мне это не удалось. Вот что я сделал в своей функции load
:
font_rw = SDL_RWFromFile(filepath, "r");
font = TTF_OpenFontRW(font_rw, 0, pointsize);
и в моей reload
функции:
TTF_CloseFont(font);
font = TTF_OpenFontRW(font_rw, 0, pointsize);
Теперь проблема в том, что шрифт загружается неправильно, поэтому я возвращаю NULL в качестве возвращаемого значения для TTF_OpenFontRW
в reload
.