Какой алгоритм масштабирования используется ID3DXFont? - PullRequest
0 голосов
/ 05 марта 2012

Я пытаюсь дополнить функциональность ID3DXFont, рендеринг текста в текстуру, а затем ID3DXSprite.Draw () - по мере необходимости.

Старый (прямой) способ:

ID3DXSprite *sprite;
ID3DXFont *font;
sprite->SetTransform(mw);
font->DrawText(sprite, ...);

Новый (оптимизированный) способ:

RenderTextToATexture(texture, ...);
sprite->SetTransform(mw);
sprite->Draw(texture, ...);

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

См. это изображение : первая строка отображается с помощью масштабирования текстуры, вторая строка - с использованием масштабирования ID3DXFont.

Просто чтобы быть уверенным, что двойного масштабирования нет, я сохраняю (предположительно немасштабированный)Текстура в файл.Это действительно немасштабированный (просто чистые пиксели $ 000 и $ FFF в BMP, даже, так что сглаживание не работает).

Я что-то упустил?Я всегда думал, что ID3DXFont делает то же самое, рендерит глифы в текстуру, а затем перетягивает их в Sprite.Draw ().Почему он так масштабирует текст?

1 Ответ

0 голосов
/ 26 марта 2012

ID3DXFont работает путем рендеринга текстовых данных непосредственно из данных глифа шрифта AFAIK.То, что вы видите, неизбежно, если вы попытаетесь уменьшить текстуру.

...