2011-06-19 3 views
1

spriteBatchの変換行列がどのように実装されているかについては、しばらくお考えになりました。私は、2Dカメラを作成し、変換行列を次のようになりました:Spritebatch.Begin()変換行列

  if (needUpdate) 
      transformMatrix = 
       Matrix.CreateTranslation(-Position.X, -Position.Y, 0) * 
       Matrix.CreateScale(curZoom, curZoom, 1) ; needUpdate = false; 

カメラは、私が好きな良い作品が、私はちょうど、変換が適用される方法を知りたい:変換はのみに影響しませんスプライトの軸、または画面の座標もあまりにも大きいですか?

ありがとうございます!

+0

もう少し研究を重ねた結果、私はこれを見つけました: ""変換マトリックスは、世界をその特定の位置に移動させ、それを描くだけです。あなたのオブジェクトはまだポジションを維持しています」「 この行は私が探していたものです! –

答えて

5

私はあなた自身の質問に答えましたが、完全な情報を提供しています。SpriteBatchは、従来のワールドビュー投影システムと同様のインターフェースを提供します。

SpriteBatchクラスは暗黙投影マトリックス(左上(0,0)、ピクセル当たり1単位)ビューポートの「クライアントスペース」の座標を取得し、画面上にそれらを置く有します。

Beginコールには、カメラを移動するために使用されるビューマトリックスに相当する変換マトリックスを受け入れるオーバーロードがあります。

そしてDraw呼び出し、実際に行列を使用していない間、あなたは位置、回転、スケールなどを指定することができます - シーンでモデルを位置決めするために使用さ世界マトリックス(ワールド空間にモデル空間)に相当するものは、 。

SpriteBatchは、テクスチャ(またはソース矩形)のサイズの四分円(スプライト)である「モデル」に相当します。描画されると、そのクワッドはワールド座標に変換され、ビュー座標に変換され、最後にその投影座標に変換されます。

+0

ありがとうアンドリュー!それは本当に私の心の中にあったすべての混乱をクリアしました!再度、感謝します!!! –

+0

あなたは大歓迎です:) –

関連する問題