0

环顾四周,找不到有这个问题的人,也找不到答案,所以我把它贴在这里!

无论如何在使用 2D 相机时在 xna 中同时使用primitiveBatch 和 spriteBatch 吗?有没有办法将在 spriteBatch 上进行的投影应用到primitiveBatch 上?

4

1 回答 1

1

好吧,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

于 2013-04-11T13:02:41.573 回答