簡體   English   中英

如何在spriteBatch.Draw()中應用多個矩陣?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM