ID3DXFont の機能を補完し、テキストをテクスチャにレンダリングしてから、必要に応じて ID3DXSprite.Draw() を実行しようとしています。
古い(直接)方法:
ID3DXSprite *sprite;
ID3DXFont *font;
sprite->SetTransform(mw);
font->DrawText(sprite, ...);
新しい (最適化された) 方法:
RenderTextToATexture(texture, ...);
sprite->SetTransform(mw);
sprite->Draw(texture, ...);
テキストは、直接レンダリングする場合はスケーリングに関係なく読みやすくなりますが、テクスチャにレンダリングしてからテクスチャとしてスケーリングすると見苦しくなります。
この画像を参照してください: 1 行目はテクスチャ スケーリングによってレンダリングされ、2 行目は ID3DXFont スケーリングによってレンダリングされます。
二重スケーリングがないことを確認するために、(おそらくスケーリングされていない) テクスチャをファイルに保存しています。実際にはスケーリングされていません (BMP の純粋な $000 および $FFF ピクセルであるため、平滑化は機能していません)。
何か不足していますか?私はいつも、ID3DXFont が同じことを行い、グリフをテクスチャにレンダリングし、Sprite.Draw() でそれらをビューにブリットすると考えていました。では、なぜテキストのスケーリングがこれほど優れているのでしょうか。