【发布时间】:2013-04-28 00:32:39
【问题描述】:
我目前正在为 windows phone 7 开发一个游戏。我的游戏的地图由一个二维数组组成,每个元素中都包含一个体素。地图的渲染代码如下。
//Draw Map
for (int i = 0; i < 499; i++)
{
for (int j = 0; j < 499; j++)
{
spriteBatch.Draw(groundVoxelTexture, voxels[i, j].Position, Color.White);
}
}
我还应该提到,玩家在屏幕上保持居中,地图围绕玩家移动。
问题在于,这会为手机渲染创建大量纹理,并最终导致如此多的延迟,以至于我运行它的手机会锁定。那么有没有办法让屏幕外的对象不渲染?
【问题讨论】:
-
我对 XNA 不熟悉,但在性能方面,将您打算绘制的所有精灵批处理到一个调用中通常是一个好主意。在这里,您将在每个绘制周期单独绘制每个。这是很多电话。
-
我假设职位是按某种顺序排列的?你应该能够调整你的循环开始和结束位置
-
@ErikN spriteBatch 有一个
Begin和一个End,您必须调用它们。我不能 100% 确定,但我敢打赌,当调用End时,它会将它们组合成一个调用。 -
@Cemafor 啊,这很有道理。谢谢。
标签: c# visual-studio-2010 windows-phone-7 xna render