我的游戏场景中有2个游戏对象,一个角色精灵和一个背景精灵。我将标量矩阵传递给spritebatch.begin参数,当缩放1或更低时,一切都很好。但是当我缩放到1以上时,我的背景图像不会绘制(角色精灵仍然会这样做)。背景和角色都有完全相同的代码(除了位置,图像文件等)。
矩阵:
ViewMatrix = Matrix.CreateScale(1.5f); //Anything 1 or below works fine.
我希望我能提供更多信息,但我不知道要提供什么......我尝试在网上搜索类似的问题并且没有找到任何信息。
答案 0 :(得分:2)
使用Matrix.CreateScale(1.5f, 1.5f, 1f)
- 基本上:不要缩放Z轴。
GPU栅格区域在(-1, -1, 0)
到(1, 1, 1)
的范围内。仅渲染落入此卷的片段(像素)。 Z轴是深度缓冲区的范围。传统上,投影矩阵会将您的场景投射到此空间中。
SpriteBatch
相当于投影矩阵将您的场景置于“客户端空间”(原点左上角)并将其投影到此空间。但它只留下了Z轴。
默认情况下,SpriteBatch
不使用深度缓冲区。但它仍然为每个精灵四边形提供一个Z位置,由layerDepth
参数指定为SpriteBatch.Draw
。
在精灵四元组位于SpriteBatch.Begin
之后,以及投影之前,应用Draw
中指定的变换。
通常layerDepth
的有效范围介于0和1之间(因为它属于光栅体积)。但是,如果您应用修改精灵Z轴的自定义变换,layerDepth
的有效范围将会改变。