Дядя Миша писал: TTF либо стандартными виндовыми средствами, либо на линуксе через FreeType2. Таскать вместе с движокм библиотеку, которая весит больше чем сам движок я не планирую.
Есть, насколько я помню, еще махонькие stb-библиотеки для этих же целей.
stbtt_BakeFontBitmap(ttf_buffer,0, 32.0, temp_bitmap,512,512, 32,96, cdata); // no guarantee this fits!
Типо никакой гарантии, что все буквы влезут в атлас, плюс этому коду надо указывать не имя системного шрифта, а путь до физического файла. Зачем мне, спрашивается, всё переделывать, если я уже сделал анализатор упаковки, который подбирает оптимальные размеры, наложил пост-процессы и прочее. Если бы я про него вспомнил парой дней раньше, может быть и заюзал бы.
Добавлено 11-03-2020 в 13:57:
Он фактически в этот хидер запихал софтрендер. Теперь спрашивается, если какие-то буквы некорректно отрендерятся или упадёт это всё - как исправлять ошибку, как это поддерживать? Ну нафиг, я не хочу с этим связываться. Есть виндовые функции, им я доверяю в этом плане.
Добавлено 11-03-2020 в 14:07:
Я единственно о чём жалею - слишком поздно нашёл его репозиторий, если бы мне его кто-то показал в 2010-м, я бы был в восторге, а щас - уже не нужно.
Ну этож просто примерчег закоменченный. Не важно.
У шрифтов в системе есть имя, по которому мы их берём. Реальное имя файла, естественно отличается, т.е. без этого механизма уже очень неудобно.
Так товарищи, а подскажите мне навскидку, как правильно выбирать point size шрифта в зависимости от разрешения экрана? Я пока придумал, разрешение поделить на 80 и получившееся число и будет нашим point size.
80 - это кол-во буков в консоли.
Добавлено 12-03-2020 в 13:19:
Конечно при разработке нового формата мне бы хотелось, чтобы визуально новые шрифты не слишком отличались от старых. Так например в халфе яркость шрифтов не 255, а 192 и у всех по дефолту есть обводка.
Дядя Миша
Так сохраняй с минимальной компрессией в фотошопе, вообще хранить шрифты в жпеге крайне странная затея. Лучше уж тогда генерить из .ttf
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
FiEctro писал: вообще хранить шрифты в жпеге крайне странная затея
Шрифты не в джипеге, это я вам скриншот выложил в джипеге
Цитата:
ncuxonaT писал: Мне казалось, для консоли моноширинные шрифты используют
любой шрифт с переменной шириной легко отрисовать как моноширинный.
Я тут подумал, что старый вариант консоли, где кол-во символов на строке варьировалось в зависимости от разрешения экрана - стрёмный. Ну потому что это придумал еще Кармак для моноширинных шрифтов, которых была всего одна штука. Сейчас, когда мы можем загружать на каждое разрешение свой шрифт (или с близким point size), это становится наоборот неудобно. Я принял классический размер консоли в 80 символов.
Вот что у меня в итоге получилось.
На этот раз сохранил в PNG чёб цвета непобились.
Мне тут в голову пришла забавная мысль. Тот формат, который я разработал для шрифтов с таким же успехом можно использовать и для спрайтов и для внешних лайтмап, например, вообще для любых атласов.
Зачем там городить какой-то разный огород? Для всех единый удобный формат и вася-кот.
Ну вообщем-то да, всё в эту схему укладывается и худ-спрайты и трава и партикл-фонты и импосторы. Таким образом в движке получится четыре типа объектов:
1. текстура
2. вот эти вот атласы, работающие в паре с текстурой
3. модели
4. уровни
Подаем на вход makespr для XashNT халфовский hud.txt. Он его читает, грузит с него все спрайты и объединяет их в атлас. Теперь у нас все элементы худа в одной текстуре. Можно так же просто подать на вход имя спрайта и он превратится в аналогичный атлас с внешним хидером.
Это для миграции с халф-лайфов. Для создания новых спрайтов надо просто наделать кадров и указать их на вход по маске. Ну возможны, конечно еще какие-то режимы работы, в будущем.
Добавлено 14-03-2020 в 19:53:
Между прочим поддерживаются поименованные кадры спрайтов. Этот хидер, который я разработал - это мета-контейнер на самом деле.
Вложение: hud_640.bmp (529.1 кб)
Этот файл был скачан 107 раз.
Наконец-то дошли руки опробовать тот упаковщик атласа, котоым так восторгался Психопат. Ну это который строит подобие BSP-дерева из ректанглов. Опробывал, результат в аттаче. Можете сравнить с верхним.
И ярко видна вот эта тенденция оставить правый нижний угол пустым. Если бы это было в 3д, я бы конечно предложил порубать изначальный объем надвое, но это блин картинки, их нельзя так разрубать
Правда справедливости ради стоит отметить, что это единственный фейл упаковщика - на остальных картинках меньшего размера, он довольно неплохо справился. Впрочем единственная его заслуга - картинки лежат приятно глазу. Но не слишком эффективно.