ПрограммированиеФорумОбщее

Текст с контуром

#0
22:56, 8 сен 2010

Ищется инфа как проще всего сделать подобное. Нужен контур к тексту для ogl и dx9, рассматриваются все варианты. Для огл через QGLWidget всё происходит, но это не важно.

Изображение удалено
#1
23:08, 8 сен 2010

_vasa_
делаешь 2 шрифта... белый текст и темный контур... накладываешь на первый второй...

#2
23:13, 8 сен 2010

Pushkoff
Каким образом регулировать контур - размер шрифта, жирность ? Насколько это плавно или грубо?

#3
23:52, 8 сен 2010

Для dx9 есть вариант делать меш и выводить вместе с ID3DXFont. А вот для гл может кто подскажет генератор мешей под шрифты (или просто без привязки к апи, еще лучше)?

#4
2:14, 9 сен 2010

_vasa_
> Каким образом регулировать контур - размер шрифта, жирность ?
Методом растягивания темного шрифта на 1...N пикселей вокруг белого

Юзай поиск, здесь этот вопрос поднимался неоднократно, и даже примеры кода были


>Насколько это
> плавно или грубо?

Насколько сделаешь

#5
2:38, 9 сен 2010

Чтобы корректно создать контурный шрифт из обычного (атлас с буквами и данные по координатам и кернингу) понадобится создать новый рендер таргет. Нарисовать в него каждую букву чёрным цветом со смещением на 1 пикс вправо, вверх, влево и вниз. Для плавного контура можно ещё нарисовать 25-30% прозрачным черным по диагонали - вправо-вверх, влево-вниз итд.
Сверху нарисовать ту же букву белым цветом. Поправить размер символа (+2 ширина, +2 высота, и не уверен, вероятно подправить кернинги, но можно и без них). Полученный атлас и поправленные размеры букв использовать вместо шрифта.

#6
7:33, 9 сен 2010

FreeType 2 можно заюзать...

#7
14:48, 9 сен 2010

_vasa_
> размер шрифта, жирность ? Насколько это плавно или грубо?
у тебя должно быть 2 текстуры со шрифтами (хотя у нас было больше), ты выводишь их одну за другой, допустим первую блендишь, вторую выводишь аддитивом, третью - мульплаем и этим добиваешься нужного эффекта...
а текстуры шрифта проси у дизайнеров...
жирный шрифт это уже совсем другой шрифт, хотя и можно путем нехитрых манипуляций со скейлом получить его подобие, но оно все равно будет стремно...
ну и путем тех же манипуляций со скейлом можно получитьшрифты чуть большего и чуть меньшего размеров...

#8
14:56, 9 сен 2010

Pushkoff
Никаких текстур мне никто не даст, не шути так
Первый вариант на рассмотрение http://stackoverflow.com/questions/3514935/3d-text-on-qglwidget-in-qt-4-6-3
Превращаем в полигоны и плавно подгоняем каждую букву. Масштаб тут тоже выставить несложно. Если всё пройдет нормально, то для директа аналогично осуществим его средствами.

#9
15:26, 9 сен 2010

_vasa_
> Никаких текстур мне никто не даст, не шути так
ну если так проще то я не против, я тебе рассказал о системе которая реально использовалась...

#10
16:04, 9 сен 2010

_vasa_
> Никаких текстур мне никто не даст, не шути так
я дам : FontBuilder

#11
16:07, 9 сен 2010

AndryBlack
Сначала с полигонами разобраться нужно. Если тут не выйдет ничего, то будет freetype, текстуры и т.д.

#12
17:00, 9 сен 2010

_vasa_
> Никаких текстур мне никто не даст, не шути так
angelcode.com -> bmfont
он генерит текстуры и файлы описания бинарные или текстовые, или по ходу даже XML. Их грузишь, берешь оттуда координаты букв, размеры, и кернинг.
Пример загрузки и рисования через HGE здесь: http://relishgames.com/forum/viewtopic.php?t=5623
Алгоритм рисования медленный но простой, для понимания хватит.

#13
17:15, 9 сен 2010

kvakvs
Генерить что-то заранее в моем случае крайне не желательно.

ПрограммированиеФорумОбщее

Тема в архиве.

Тема закрыта.