ID3DXFont使用的缩放算法是什么?

时间:2012-03-05 07:43:50

标签: directx direct3d direct3d9

我正在尝试补充ID3DXFont功能,将文本渲染到纹理,然后根据需要将其呈现给ID3DXSprite.Draw()。

旧(直接)方式:

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

新的(优化的)方式:

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

直接渲染时,无论缩放如何,文本都会变得美观可读,但渲染到纹理后会变得难看,然后缩放为纹理。

参见this image:第一行是纹理缩放,第二行是ID3DXFont缩放。

为了确保没有双重缩放,我将(假设未缩放的)纹理保存到文件中。它是indeed unscaled(在BMP中只有纯$ 000和$ FFF像素,甚至,因此没有平滑功能。)

我错过了什么吗?我一直认为ID3DXFont会做同样的事情,将字形呈现为纹理,然后使用Sprite.Draw()将这些字体嵌入到视图中。为什么它比文本更好地扩展文本呢?

1 个答案:

答案 0 :(得分:0)

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