XNA 2D摄像机性能

XNA 2D摄像机性能,xna,Xna,我想知道是在SpriteBatch.Begin()中使用变换矩阵渲染整个世界还是仅渲染视口定义的区域?如果不是,那么在没有严重性能问题的情况下呈现一个巨大世界的最佳方式是什么 提前谢谢 您可以计算出该视口的边界矩形,而不必在矩形外绘制任何内容。如果您的世界是基于网格的,这将变得更加容易 对于基于栅格的世界,需要两个(嵌套)For循环来绘制视口,即宽度和高度。 对于每个循环,都需要一个起点和一个终点 要获得每个循环的起点:将(宽度/高度)除以网格中单元格的(宽度/高度),然后将该数字“floor”

我想知道是在SpriteBatch.Begin()中使用变换矩阵渲染整个世界还是仅渲染视口定义的区域?如果不是,那么在没有严重性能问题的情况下呈现一个巨大世界的最佳方式是什么


提前谢谢

您可以计算出该视口的边界矩形,而不必在矩形外绘制任何内容。如果您的世界是基于网格的,这将变得更加容易

对于基于栅格的世界,需要两个(嵌套)For循环来绘制视口,即宽度和高度。 对于每个循环,都需要一个起点和一个终点

要获得每个循环的起点:将(宽度/高度)除以网格中单元格的(宽度/高度),然后将该数字“floor”

要获得每个循环的终点:将(宽度/高度)除以网格中单元格的(宽度/高度),然后将此数字“天花板”

从那里,您可以使用先前计算的起点和终点正常绘制栅格


如果你的世界不是基于网格的,你可以使用简单的“矩形中的点”测试或八叉树测试。

非常感谢你的回答,这正是我们想要的:D