Форум: "Игры";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];
ВнизИспользование шрифтов TrueType в Direct3D Найти похожие ветки
← →
Vasiliy (2006-05-23 10:59) [0]Добрый день.
Необходимо выводить много текста под Direct3D.
Есть две идеи, как это реализовать:
1. Писать текст на канве битмапа и потом переносить на текстуру
2. используя шрифт TrueType за шаблон формировать буквы из примитивов.
Первый вариант затруднений не вызывает, но он менее предпочтителен, не очень гибкий.
Второй вариант по идее должен быть достаточно гибким, но как его реализовать ума не приложу. Для начала нужно знать хотябы формат TTF файлов и принципы построения.
Может ктонибудь сталкивался с подобной задачей, пните в нужную сторону.
← →
Cash © (2006-05-23 17:21) [1]1 - Бррррр! Бателька, да у вас извращенские мысли!!! :)))
2 - (прочитал после отписки на первое) Чтож... мой диагноз подтверждается! :)))
:D
Для TT шрифтов есть ID3DXFont интерфейс, я не знаю как с ним работать.
Выводит он достаточно хорошо, но ме-е-е-е-еее-дленно!
Идейка то у тебя правильная, в первой мысле, но малость не вту степь!
Не слова, а буквы!
Делаем класс, который имеет свой вертекс буффер (у меня еще и
индекс буффер в нем есть) и текстуру шрифта с размеченными координатами.
А для вывода описать метод, который в заполняет и выводит в девайс
набор вершин с координатами соответствующих букв.
Мой класс умеет выводить ~1500 симолов (именно символов) без падения
FPS. (ну 1-2% это же не падение :) )
← →
Vasiliy (2006-05-23 18:34) [2]Ну такой вот я извращенец :)))
> Делаем класс, который имеет свой вертекс буффер (у меня
> еще и
> индекс буффер в нем есть) и текстуру шрифта с размеченными
> координатами.
> А для вывода описать метод, который в заполняет и выводит
> в девайс
> набор вершин с координатами соответствующих букв.
Второй вариант я примерно так себе и представляю, только буквы выводить не как текстуру, а как набор примитивов. Так буквы можно сделать объемными и натянуть на них любую текстуру.
А загвоздка как раз в просчете вершин примитивов по образу буквы из TTF.
Скорее всего буду конвертер лепить чтобы заранее просчитать вершины для нужных шрифтов, а потом готовые массивы буду подгружать в вертекс буфер с индексацией букв.
← →
Sapersky (2006-05-23 18:50) [3]Ну можно, конечно, и так, если очень хочется :)
http://www.geocities.com/foetsch/extrude/extrude.htm
Что касается стандартного метода, о котором говорил Cash, то во framework"е к DX8 SDK есть класс СD3DFont (см. www.clootie.ru).
← →
Pa5ha (2006-05-23 23:18) [4]Это одна из причин, по которой я перешел на опенГЛ :)
Cash ©, наверно это очень маленькие символы :) У меня текста немного, но фпс тем не менее падает чуть чуть. Использую альфатест. А Вы?
А Краснов кста в своей книге описывал метод вывода текста буквами из примитивов :))
← →
Vasiliy (2006-05-24 09:20) [5]
> А Краснов кста в своей книге описывал метод вывода текста
> буквами из примитивов :))
Да, есть, только он там у него вертекс буфер грузится из готового файла.
А вопрос как раз в том, чтобы эти готовые файлы с массивами вершин сгенерить из шрифтов TrueType.
← →
Cash © (2006-05-24 12:47) [6]Pa5ha (23.05.06 23:18) [4]:
:)) Просто у меня руки из плечей ростут! А плечи из шеи, а та из головы! :)))
Нармальненький шрифт. Verdana 10pt простой. И без проблем выводит,
даже с любой подсветкой.
А как ты на ОГЛ-е эту муть решил? То есть тоже текстурой? или по своему.
У меня там просто все слово забивалось в буффер вершин с текстурными
координатами букв. Параллельно вел буффер индексов для уменьшения
количества вершин. А в догонку выводил все скопом. И все, рецепт счастья
готов. Одно только, я как порядочный кулинар дозировки ингредиентов не
назвал, а ведь в них вся суть! :)
Vasiliy:
Смотри, попробуй свою задумку воплотить.
Но... n вершин против четырех... (к тому же n >>> 4)
Что я там на счет рук говорил... :)))
(... да еще и файл формат мутить..... уф-ф-ф... ох, да еще и формат ttf
вскрывать.... не-е-е-е...)
Я как то по проще обошолся, без особых замудрений, простенько, но с
вкусом.
← →
Vasiliy (2006-05-24 14:11) [7]Раз пошла такая пьянка .... :)
Еще вопросик, ктонить пробовал накладывать на вершины текстуру на которой отображается видео?
В общемто вся загвоздка в том, как видео поток быстренько на текстуре воспроизвести ...
← →
Sapersky (2006-05-24 14:26) [8]А вопрос как раз в том, чтобы эти готовые файлы с массивами вершин сгенерить из шрифтов TrueType.
формат ttf вскрывать
Не надо ничего вскрывать. См. ещё раз ссылку из [3].
Delphi-пример с путями (paths) валяется где-то на DelphiGFX, последний в списке, насколько помню.
Но всё равно дело это муторное. К тому же если нужно выводить МНОГО текста - его придётся делать достаточно мелким и разворачивать лицом к зрителю, и супер-мега-тридэшность не будет заметна.
Опять же, текстурному тексту можно придать некоторый объём бамп-мэппингом (на www.clootie.ru был пример).
По видео - в DX SDK был пример. Правда, начиная с DX 8 он идёт в составе примеров к DirectShow, так что на clootie.ru его скорее всего нет, хотя надо посмотреть...
← →
Cash © (2006-05-24 14:33) [9]Да, в SDK (он для MS VS) есть пример.
Еще на http://www.gamedev.ru прямо на титульной станице светится:
"как воспроизводить видео в играх" или как то там еще.
← →
Vasiliy (2006-05-24 16:20) [10]Спасибо всем!
Скачал последний DX SDK с примерами 53 метра, пока на работе инет халявный :)
Буду разбирать примеры ...
← →
Vasiliy (2006-05-24 22:27) [11]
> По видео - в DX SDK был пример. Правда, начиная с DX 8 он
> идёт в составе примеров к DirectShow, так что на clootie.
> ru его скорее всего нет, хотя надо посмотреть
Посмотрел, на clootie примеров к DirectShow не нашел :(
Может ктонить натыкался на примеры в другом месте?
← →
Sapersky (2006-05-26 11:57) [12]DX SDK - это официальный SDK от Microsoft, для C++ (и VB). Размером он должен быть поболее 50 мб.
Если не хочется качать, могу скинуть на мэйл пример на C++/DX8.
← →
Vasiliy (2006-05-26 14:27) [13]Уже нашел, спасибо
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2007.04.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.044 c