Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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.49 MB
Время: 0.08 c
2-1175179000
Анонимный
2007-03-29 18:36
2007.04.22
Многострочный текст и картинка в record e


3-1170688056
Da
2007-02-05 18:07
2007.04.22
Какое лучше использовать?


15-1174882156
KSergey
2007-03-26 08:09
2007.04.22
Детали лицензий на софт


2-1175170243
Alex_C
2007-03-29 16:10
2007.04.22
Странное поведение формы из DLL


2-1175355079
sat
2007-03-31 19:31
2007.04.22
TChart





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский