我想知道在SpriteBatch.Begin()中使用变换矩阵是渲染整个世界还是仅渲染视口定义的区域?如果没有,那么在没有严重性能问题的情况下渲染巨大世界的最佳方法是什么?
提前致谢!
答案 0 :(得分:3)
您可以计算出此视口的边界矩形,而不是在矩形外部绘制任何内容。如果您的世界是基于网格的,那么这将变得更加容易。
对于基于网格的世界,您需要两个(嵌套的)for循环来绘制视口,宽度和高度。 对于每个循环,您需要一个起点和终点。
获取每个循环的起始点:将(宽度/高度)除以网格中单元格的(宽度/高度),然后将“放置”此数字。
获取每个循环的终点:将(宽度/高度)除以网格中单元格的(宽度/高度),然后将“天花板”除以此数字。
从那里,您可以使用先前计算的起点和终点正常绘制网格。
如果您的世界不是基于网格,您可以使用简单的“矩形点”测试或八叉树。