Заполнение текстовых контуров в Direct3D - PullRequest
0 голосов
/ 09 мая 2011

Я удивлен, что Google не проливает свет на это.

Я создаю простую программу просмотра САПР с использованием Direct3D. Из-за своей природы (функция масштабирования и т. Д.) Текстовые элементы должны быть векторными; Я не могу использовать текстурированные полисы.

Я вызвал gdi32.dll, чтобы получить глифы и создать вполне разумные текстовые контуры из прямых линий и кривых Безье, однако текст не сплошной, и точки не всегда являются правильными. Вмещающие символы (b, p, o, A и т. Д.) На самом деле имеют более одного отдельного контура.

Как следствие, я не могу просто выстрелить точки в буфер вершин и указать тип примитива.

Все, что я могу сделать в данный момент, это визуализировать контуры в виде линейных линий, что приводит к тексту приветствия.

Кто-нибудь может предложить хорошую стратегию рендеринга сплошного векторного текста с их контурами?

Обратите внимание, что я интерполирую кривые Безье в списки точек (многие люди используют шейдеры / колдовство).

Ответы [ 2 ]

1 голос
/ 09 мая 2011

Вы не упоминаете, какую версию DirectX вы используете, но функция утилиты D3DXCreateText создаст трехмерную сетку для заданного текста любым шрифтом TrueType. Если вам нужна 2D-версия, просто используйте экструзию без или с минимальной вытяжкой и прямую ортогональную проекцию.

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

Может помочь снимок экрана с точным внешним видом, который вам нужен. Все мои чертежи CAD имеют сплошной текст, без контуров.

0 голосов
/ 28 ноября 2012

Я создаю текстовые сетки с помощью D3DXCreateText (Win32, DX9). Они вращаются красиво. Однако кажется, что они всегда имеют одинаковый размер независимо от высоты шрифта, выбранного в DC.

Линии сетки более мелкими символами имеют псевдонимы и плохо выглядят на видеокартах без мультисэмплинга.

...