[英]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.Draw
的layerDepth
參數指定。
在SpriteBatch.Begin
指定的變換將在精靈四邊形通過Draw
定位之后並在投影之前應用。
因此, layerDepth
的有效范圍通常在0到1之間(因為這屬於柵格體積)。 但是,如果您應用自定義轉換來修改精靈的Z軸,則layerDepth
的有效范圍將會更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.