0

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() でそれらをビューにブリットすると考えていました。では、なぜテキストのスケーリングがこれほど優れているのでしょうか。

4

1 に答える 1

0

ID3DXFont は、フォントのグリフ データ、AFAIK から直接テキスト データをレンダリングすることによって機能します。テクスチャをダウンサンプリングしようとすると、表示されるものは避けられません。

于 2012-03-26T13:52:19.440 に答える