2009-07-01 4 views
0

Я хочу визуализировать шрифт таким образом, чтобы учитывать текущие преобразования и аналогичные настройки, особенно проекционное преобразование и видовое окно.C++ D3DX Шрифт и преобразования (необходимые решения d3d9 и d3d10)

Я думаю, что лучший способ сделать это - иметь внешнюю поверхность экрана для визуализации текста, а затем визуализировать ту поверхность, где я действительно хочу текст.

Однако я не уверен в ряде аспектов этого решения.

  • Это лучший способ обойти это вообще?

  • Есть ли гораздо лучшие бесплатные визуализаторы шрифтов вокруг этого идентификатора, чтобы лучше проводить время с помощью таких вещей. Я вижу много людей, которые жалуются на интерфейсы шрифтов d3dx по разным причинам, но никогда не ссылаются на лучший рендеринг с поддержкой unicode ...?

  • Есть ли какое-либо преимущество в использовании определенных форматов поверхности и/или размеров поверхности (например, всегда используйте наименьшее возможное, а не какое-то стандартное большое, что требует дополнительного шага для работы с размером ...)

ответ

1

Да, визуализируйте текстуру, а затем нарисуйте текстурированный квадрат, чтобы ориентировать и позиционировать текст, который будет самым простым способом реализовать эту функциональность.

Что касается текстовых рендерингов D3DX, это действительно зависит от того, какой SDK вы используете. DirectWrite (только для Windows 7 и Vista) обеспечит более качественный подход к визуализации текста для приложений, которым требуется высококачественное текстовое отображение, совместимым с Direct3D.

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

Сказав, что есть новая альтернатива, доступная вам с Direct3D и шейдерами при условии, что у вас есть доступ к контурам глифов в виде данных кривой. Идея состоит в том, чтобы использовать шейдер для растеризации текста и хранения определений кривой в потоке вершин и связанных текстурах. Попробуйте посмотреть на this paper, где описывается техника.