Перезагрузка TTF_Font * для простого изменения размера точек с помощью TTF_OpenFontRW? - PullRequest
0 голосов
/ 17 сентября 2018

Я хочу иметь возможность динамически изменять размер текста, который я выводил на экран с моим объектом 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.

...