0

我正在尝试补充 ID3DXFont 功能,将文本渲染到纹理,然后根据需要进行 ID3DXSprite.Draw()-ing。

旧(直接)方式:

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

新(优化)方式:

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

直接渲染时,无论缩放如何,文本都很好且可读,但在渲染到纹理然后缩放为纹理时会变得丑陋。

这张图:第一行是通过纹理缩放渲染的,第二行是 ID3DXFont 缩放。

为了确保没有双重缩放,我将(假定未缩放)纹理保存到文件中。它确实是未缩放的(即使是 BMP 中的纯 $000 和 $FFF 像素,所以没有平滑工作)。

我错过了什么吗?我一直认为 ID3DXFont 做同样的事情,将字形渲染到纹理中,然后使用 Sprite.Draw() 将它们放到视图中。为什么它可以更好地缩放文本呢?

4

1 回答 1

0

ID3DXFont 通过直接从字体的字形数据 AFAIK 渲染文本数据来工作。如果您尝试对任何纹理进行下采样,您所看到的都是不可避免的。

于 2012-03-26T13:52:19.440 回答