环顾四周,找不到有这个问题的人,也找不到答案,所以我把它贴在这里!
无论如何在使用 2D 相机时在 xna 中同时使用primitiveBatch 和 spriteBatch 吗?有没有办法将在 spriteBatch 上进行的投影应用到primitiveBatch 上?
环顾四周,找不到有这个问题的人,也找不到答案,所以我把它贴在这里!
无论如何在使用 2D 相机时在 xna 中同时使用primitiveBatch 和 spriteBatch 吗?有没有办法将在 spriteBatch 上进行的投影应用到primitiveBatch 上?
好吧,2d 相机只是一个矩阵,幸运的是 spritbatch 的 Begin 方法有一个 2d 转换参数。
public void Begin (
SpriteSortMode sortMode,
BlendState blendState,
SamplerState samplerState,
DepthStencilState depthStencilState,
RasterizerState rasterizerState,
Effect effect,
Matrix transformMatrix
)
看看底部,最后一个参数。
这意味着 this 和 spritebatch 的 end 方法之间的所有后续绘制调用都将应用此转换矩阵。
如果我们想进一步抽象绘图,我们可以创建自己的相机类,该类将包含一个属性,可能会为您返回相机当前状态的正确矩阵。
一个快速的谷歌搜索给了我这个教程,它似乎很好地展示了如何抽象矩阵的使用,而不是只使用位置、比例和旋转。 http://adambruenderman.wordpress.com/2011/04/05/create-a-2d-camera-in-xna-gs-4-0/
有关更多信息,请查看 http://msdn.microsoft.com/en-us/library/ff433701.aspx