簡體   English   中英

XNA spritebatch矩陣縮放比例超過1導致背景無法繪制

[英]XNA spritebatch matrix scaling over 1 causes background to not draw

我的游戲場景中有2個游戲對象,一個角色精靈和一個背景精靈。 我將標量矩陣傳遞到spritebatch.begin參數中,當縮放為1或以下時,一切都可以正常繪制。 但是,當我縮放到大於1的任何位置時,我的背景圖像都不會繪制(字符精靈仍會繪制)。 背景和字符幾乎具有完全相同的代碼(位置,圖像文件等除外)。

矩陣:

ViewMatrix = Matrix.CreateScale(1.5f); //Anything 1 or below works fine.

我希望可以提供更多信息,但是我不知道要提供什么。.我嘗試在網絡上搜索類似的問題,但沒有發現任何問題。

使用Matrix.CreateScale(1.5f, 1.5f, 1f) -基本上:不要縮放Z軸。


GPU柵格區域在(-1, -1, 0)(1, 1, 1) (-1, -1, 0)的范圍內。 僅渲染落入該體積的片段(像素)。 Z軸是深度緩沖區的范圍。 傳統上,投影矩陣會將您的場景投影到該空間中。

SpriteBatch的等效投影矩陣將您的場景帶入“客戶空間”(原始左上角)中,並將其投影到該空間中。 但是它只剩下Z軸。

默認情況下, SpriteBatch不使用深度緩沖區。 但是它仍然為每個Sprite Quad提供一個Z位置,該位置由SpriteBatch.DrawlayerDepth參數指定。

SpriteBatch.Begin指定的變換將在精靈四邊形通過Draw定位之后並在投影之前應用。

因此, layerDepth的有效范圍通常在0到1之間(因為這屬於柵格體積)。 但是,如果您應用自定義轉換來修改精靈的Z軸,則layerDepth的有效范圍將會更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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