私はXNA、特にSpriteBatchに非常に微妙な問題があります。 私のゲームでは、私はカメラクラスを持っています。それはビューを(明らかに)翻訳することができますまたズームインとズームイン。 spritebatchインスタンスの "Begin"関数(最後のパラメータ)を呼び出すと、シーンにカメラが適用されます。SpriteBatchのドローコールはXNAによって削除されますか?
問題:Zoomfactorのカメラが1.0fを超えると、スプライトバッチが描画を停止します。 私は自分のシーンをデバッグしようとしましたが、間違ったところを見つけることができませんでした。
"Matrix.CreateScale(2.0f);でレンダリングしようとしました。 「開始」の最後のパラメータとして使用します。 他のすべてのパラメータはnullで、最初の「SpriteSortMode.Immediate」です。カスタムシェーダなどはありません。 しかし、SpriteBatchは引き続き描画したくありませんでした。
次に、 "DrawString"とDrawStringだけを呼び出して、提供されたスケール(2.0f)で完璧に動作させようとしました。
しかし、多くの試行錯誤を経て、ScaleMatrixにMatrix.CreateTranslation(0、0、-1)を掛けても何らかの形で "安全"値が1.1fに変更されていることがわかりました。 したがって、1.1fまでのすべてのスケール値が機能しました。上記のすべての場合、SpriteBatchは通常の描画呼び出しでは1つのピクセルを描画しません。 (DrawStringはまだ影響を受けず、動作しています)。
どうしてですか? ビューポートや他のマトリックスを設定しませんでした。 これは、奇妙なニア/ファークリッピングのようなものかもしれません。 しかし、私は通常、3Dのものからそれらのパラメータだけを知っています。
不明な点がある場合はお問い合わせください。
ソリューションは完璧に機能します。詳細な説明をくれてありがとう、本当に便利でした! – riki