如何在Windows手机的xna中优化性能

时间:2012-01-08 04:09:51

标签: windows-phone-7 xna

在我的一个游戏关卡中,我有很多很棒的纹理。为了让你知道我在谈论的是纹理大小和关卡中的数量。 448x420 - 3,315x400-2,305x429 -3,366x167-1,356x265-4,401x343-2,387x251-1加上约20个元素,纹理尺寸小得多。

我原来实现的性能是20fps。然后我创建了一个纹理贴图,其中包含了关卡中使用的所有纹理,这给了我大约3-4个额外的fps。 24fps对我来说还不够,还有什么可以尝试优化我的表现?

2 个答案:

答案 0 :(得分:2)

我能想到的一些事情

  • 是否有专用的GPU和内存或使用共享内存?
  • 您是否尝试将纹理扩展为两种尺寸(尽管只有加载时间可能会有所改善)。
  • 您使用的是mipmap还是其他类型的纹理过滤?
  • Howmany texels是否试图聚集?
  • 您是否尝试使用1比1的纹理,只是为了看看它是否真的是您的瓶颈?

根据我的经验,移动设备上的纹理调用非常繁重。一定要尽量减少纹理的大小。看看你的项目,如果一个对象只占用屏幕的10%左右,它真的需要128x128或更大的纹理吗? 我不知道你使用的是什么样的项目和目标设备,但448x420的纹理(2的非功率?!)对于手机游戏来说似乎有些过分。事实上,我会重新尝试并保持低于总体组合纹理使用率1024x1024或其他什么?

我是否理解这是您的总纹理尺寸? (448 * 420 * 3)+(315 * 400 * 2)+(305 * 429 * 3)+(366 * 167)+(356 * 265 * 4)+(401 * 343 * 2)+(387 * 251 )= 2.019.720像素(忽略你提到的~20个元素)

这意味着假设32位纹理,理论上,你使用大约64 MB的ram,仅用于纹理存储(甚至不假设mipmap和XNA没有扩展到两个纹理的功率)(不确定XNA是否内部使用dds / dxt压缩(?))。我可以想象这对移动设备来说非常高。

希望这可能有助于解决您的瓶颈。

答案 1 :(得分:1)

您应该尝试分析您的应用程序,检查问题是否实际存在于图形渲染中或其他地方。

有一些工具可用于此,但大多数工具在WP7中有限制。第一个建议是微软的Windows Phone profiler和用于图形监控的PIX,在帖子中提到。还有XNA Framework Remote Performance Monitor,但据我所知,没有WP7兼容版本。