在我的一个游戏关卡中,我有很多很棒的纹理。为了让你知道我在谈论的是纹理大小和关卡中的数量。 448x420 - 3,315x400-2,305x429 -3,366x167-1,356x265-4,401x343-2,387x251-1加上约20个元素,纹理尺寸小得多。
我原来实现的性能是20fps。然后我创建了一个纹理贴图,其中包含了关卡中使用的所有纹理,这给了我大约3-4个额外的fps。 24fps对我来说还不够,还有什么可以尝试优化我的表现?
答案 0 :(得分:2)
我能想到的一些事情
根据我的经验,移动设备上的纹理调用非常繁重。一定要尽量减少纹理的大小。看看你的项目,如果一个对象只占用屏幕的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兼容版本。