我正在尝试补充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()将这些字体嵌入到视图中。为什么它比文本更好地扩展文本呢?
答案 0 :(得分:0)
ID3DXFont的工作原理是直接从字体的字形数据AFAIK渲染文本数据。如果你尝试对任何纹理进行下采样,你所看到的是不可避免的。