我想知道是否在SpriteBatch中使用变换矩阵。Begin()渲染整个世界还是仅渲染视口定义的区域?如果没有,那么在没有严重性能问题的情况下呈现一个巨大世界的最佳方式是什么??
提前感谢!
您可以计算出该视口的边界矩形,而不必在矩形之外绘制任何内容。如果你的世界是基于网格的,这会变得更容易。
对于基于网格的世界,您需要两个(嵌套的)For循环来绘制视口、宽度和高度。对于每个循环,都需要一个起点和一个终点。
要获得每个循环的起点:将网格中单元格的(宽度/高度)除以(宽度/高),然后"floor"这个数字。
要获得每个循环的终点:将网格中单元格的(宽度/高度)除以(宽度/高),然后"上限"这个数字。
从那里,您可以简单地使用之前计算的起点和终点正常绘制网格。
如果您的世界不是基于网格的,您可以使用简单的"矩形中的点"测试或八叉树。