2013-03-30 5 views
1

У меня есть некоторые основы, установленные в моей игре, но я пришел к тому моменту, когда хочу включить рендеринг шрифтов (первоначально для вывода отладки на экран).SDL2 & SDL_ttf - Best Practice

Глядя на различные учебники и библиотеку SDL_ttf, мне нужно что-то уточнить. SDL_ttf предоставит вам SDL_Surface, который затем вы можете создать текстуру для рендеринга оборудования. Весь процесс требует загрузки файла шрифта.

Мой главный вопрос: безопасно ли оставить файл шрифта открытым до тех пор, пока шрифт больше не понадобится?

Я увидел учебник, который закрыл файл шрифта сразу после создания SDL_Texture. Мои мысли были, если это было использовано для часто обновляемого текста, например. счетчик частоты кадров, это было бы крайне неэффективно, и было бы лучше, если бы файл шрифта был открыт (при условии, что это не оказывает отрицательного воздействия).

И последует за этим, если файл шрифта будет открыт, будет ли он заблокирован, чтобы ни один другой шрифт не мог его использовать?

+0

Прочитайте файл в память, близко файл, используйте память. – 2013-03-30 18:55:14

+0

@Armin У меня создалось впечатление, что при выпуске шрифта в SDL_ttf с использованием TTF_CloseFont (шрифт TTF_Font *) файл шрифта закрывается, но сам шрифт также удаляется из памяти, поэтому его нельзя было использовать после. – Zammalad

+2

Я просто обобщал. Вы не указали, какую функцию вы используете, но 'TTF_OpenFont', например, не оставляет файл открытым; может быть, ваша запутанная память и файл на диске. – 2013-03-30 19:16:59

ответ

2

Из отзывов теперь ясно, что при открытии файла шрифта с использованием TTF_OpenFont файл на диске не остается открытым. Поэтому, как только шрифт был открыт, он находится в памяти для использования в обычном режиме и затем может быть освобожден с TTF_CloseFont, когда больше не требуется.

Первоначальный вопрос был результатом путаницы вокруг файла остается открытым (или нет, как оказалось) после вызова TTF_OpenFont

Кредит на @Armin для этого

 Смежные вопросы

  • Нет связанных вопросов^_^