Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Вниз

Ищу программку переводящую фонт в бмпшку...   Найти похожие ветки 

 
Viv   (2006-09-09 11:41) [0]

Собственно сабж... Хочу сделать текстурный шрифт на gl, но как всегда встала глупаю проблема - нет избражения шрифта, после часа крупномасштабных баталий с paint, вспомнил что видел где то прогу, которая шрифты склеивает в бмпшку...ровненько так по ячеечкам )
Может есть у кого что-нить подобное, а то так неохота рисовать свой шрифт... Кошмар ведь получится )


 
grouzd)ev ©   (2006-09-09 11:59) [1]

http://xproger.mirgames.ru/?id=2&page=1 смотреть XFont
ps кстати сам щас парюсь, только с загрузкой этого дела)

---
... we are walking on a thin line and you better avoid the risk ...


 
cyborg ©   (2006-09-09 12:08) [2]

Есть.
http://cyborghome.ru/download/sourcedelphi/FontBuilder.zip
240 килобайт.


 
Viv   (2006-09-09 12:35) [3]

Ох спс вам большое !


 
Cash ©   (2006-09-09 13:34) [4]

Viv:
Есть конечно, даже более, я скажу, что и у тебя тоже будет! :)
Смотри, бери объект TBitMap, создавай, выставляй квадратные размеры
(када ширина равна высоте) так, чтобы они были равны степени 2!
(ну типа: 2-4-8-16-32-64-<and so on>).
Смекаешь? Размеры квадратные, а символов 256, т. е. 16 строк по 16
символов, каждый в своей клетке, размеры которой тоже равны степени 2.
Из этого и вытекает, что надо взять наибольший размер буквы, это через
TextWidth/TextHeight у канваса битмапа, вписать эти размеры в степень 2,
а потом получить размер BMP-хи, как размер ячейки помножить на 16.

Через TextOut на канвас битмапа рисуй с уже вычисленным шагом буквы.
Потом через scanline переводи BMP-ху в текстуру, а TK для букв рассчитать
проще некуда!

Ивсе, у тебя есть текстура шрифта без всяких файлов!
(Ну, если конечно хоцца декоративный шрифт забацать, то там другое дело!)


 
cyborg ©   (2006-09-09 13:41) [5]

> [4] Cash ©   (09.09.06 13:34)

Там у меня с исходником ;)

Я как-то набрёл на форум один:
http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=5239
:)


 
Cash ©   (2006-09-09 16:00) [6]

cyborg ©   (09.09.06 13:41) [5]:
:D
Ламьё там какоето видать сидит! :)))
БМП-ху как шрифт для веба... одним словом, валялся долго! :)))

cyborg, дай оценку, я тупо написал, или это можно понять?


 
cyborg ©   (2006-09-09 16:11) [7]

Оценку чего? Не понятно.


 
Rial ©   (2006-09-09 16:22) [8]

> cyborg, дай оценку, я тупо написал, или это можно понять?

Понятней некуда. Не тупо.
Молодец, объяснил хорошо.
Только многое забыл, но будем считать это домашним заданием.
:))


 
Viv   (2006-09-09 18:47) [9]

Эх спасибо за советы, но я уже скрафтил шрифт одной из программ )
Дабы не плодить новых тем задам тут сразу вопрос...
Шрифт есть надо вывести чтонить отличное от Hello world )
Ну например Фпс...
Соответсвенно рождается по видимому сверх нубский вопрос а как его посчитать...)


 
grisme ©   (2006-09-09 19:09) [10]

>а как его посчитать

вот у тебя есть код отрисовки. допустим это какая-то процедура. ФПС будет число проходов процессором по этой процедуре, грубо говоря. но тебе нужно посчитать это число за секунду. наращиваешь ФПС, пока не прошла секунда, если прошла, выводишь ФПС и обнуляешь счетчик и т.д.


 
Cash ©   (2006-09-09 19:21) [11]

cyborg ©   (09.09.06 16:11) [7]:
Да это про [4].
У меня в последнее время тенденция тупо и непонятно выражаться,
даже преподы порой не понимают. :(

Viv   (09.09.06 18:47) [9]:
Да проще некуда!
Надо только замерить интервал в одну секунду, это делается с помощью
GetTickCount и трех переменных. (TimeMark, CheckPoint, FrameRate)
TimeMark - ей присваиваешь значение GetTickCount перед каждым
рендерингом. А CheckPoint - символизирует точку прошлого обновления
FrameRate. Сам FrameRate - это счетчик кадров, он увеличивается на 1
после каждого рендеринга.
Итак, когда разница TimeMark-CheckPoint становится больше 1000 (1 сек.)
Самое время обновить счетчик, т. е. сделать следующее:

  FPS:=FrameRate;
  FrameRate:=0;
  CheckPoint:=TimeMark;
  TimeMark:=TimeMark mod 1000;

После этого всего в поле FPS лежит достоверное кол-во кадров за
прошлую секунду. Есть алгоритмы и по сложнее, но этот наглядный.

Ну и вроде все!


 
Viv ©   (2006-09-09 19:30) [12]

И вновь большое вам спасибо )


 
Cash ©   (2006-09-09 19:32) [13]

> TimeMark:=TimeMark mod 1000;
А не лажу ли я написал? Лишняя операция -- ее далой!


 
Viv ©   (2006-09-09 20:00) [14]

хммммм а это нормально что фпс ограничен частотой монитора или это мои руки ? И как это победить ? )


 
Cash ©   (2006-09-10 08:34) [15]

Viv ©   (09.09.06 20:00) [14]:
Да, это нормально! Тебе просто надо отключить VSYNC, вертикальную
синхронизацию. Этот вопросец тут уже пролетал.
Вот он: http://delphimaster.net/view/9-1153070015/


 
Galiaf ©   (2006-09-12 21:02) [16]


> У меня в последнее время тенденция тупо и непонятно выражаться,
>
> даже преподы порой не понимают. :(


не страшно, я это у себя уже много лет как наблюдаю, сам иногда понять не могу =)


 
Zer0 ©   (2006-10-14 04:31) [17]

сколько времени прошло, а люди все те же :D



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.046 c
11-1169748733
Jon
2007-01-25 21:12
2007.09.16
KOLComServ?


9-1160220897
alpha5
2006-10-07 15:34
2007.09.16
Углы поворота


2-1187875715
Dysan
2007-08-23 17:28
2007.09.16
Delphi 2007 и Show формы


15-1187695864
ZeroDivide
2007-08-21 15:31
2007.09.16
Delphi -> BDS -> RS


2-1187942312
WebBrowser
2007-08-24 11:58
2007.09.16
OnClick dlya webbrowser





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский