【问题标题】:Using PrimitiveBatch and SpriteBatch together in XNA 4.0在 XNA 4.0 中同时使用 PrimitiveBatch 和 SpriteBatch
【发布时间】:2013-04-11 21:02:41
【问题描述】:

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

在使用 2D 相机时,是否可以在 xna 中同时使用primitiveBatch 和 spriteBatch?有没有办法将 spriteBatch 上的投影应用到原始批处理上?

【问题讨论】:

    标签: xna spritebatch


    【解决方案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

    【讨论】:

    • 我可以从相机中获取当前视图,这是我用来传递给 spriteBatch 的视图,现在我一直在尝试将其传递给primitiveBatch 类。 primitiveBatch 使用 BasicEffect 绘制,所以我将 basicEffect.View 设置为我传递给 spriteBatch 的相同矩阵,但结果是primitiveBatch 的绘制在相机移动时跟随相机,而 spriteBatch 没有,我不想要有什么要跟随相机的,我做错了什么?
    • nwm,现在解决了,我将错误的视图传递给了primitiveBatch :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多