[英]How do I apply multiple matrices in spriteBatch.Draw()?
我正在用C#和XNA 4.0進行游戲。 在某些級別中,我需要一個攝影機矩陣來使級別顯示為向左/向右滾動。 此外,當使用設置更改窗口大小時,我還需要一個縮放矩陣來縮放圖形。 我的兩個矩陣都可以使用,但是我目前正在這樣的draw方法中調用它們:
if (scrollingLevel)
{
//Use the camera matrix to make the stage scroll
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null, camera.transform);
}
else
{
//Use the scaling matrix to scale the graphics
spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, transform);
}
我要的是在滾動級別時同時應用兩個矩陣(根據窗口大小縮放圖形,然后使用相機矩陣使級別滾動)。 但是,簡單地對矩陣進行相乘和相乘不會產生准確的結果(相加會阻止圖形縮放到其應有的精確數量,相乘會導致相機滾動不准確)。 我如何一次應用兩個矩陣?
在傳遞給spriteBatch.Begin
之前,只需將矩陣相乘spriteBatch.Begin
。
矩陣乘法允許將兩個矩陣的效果附加到單個矩陣中。 注意,該運算不是可交換的,這意味着A * B != B * A
在您的情況下,您可能應該將縮放矩陣與攝影機矩陣相乘。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.