我正在尝试补充 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() 将它们放到视图中。为什么它可以更好地缩放文本呢?