在我的游戏的一个关卡中,我有相当多的大纹理要画。为了让你知道我在说什么,这些是纹理,大小和级别中的数量。448x420 -3、315x400-2、305x429 - 3、366x167-1、356x265-4、401x343-2、387x251-1加上大约20个纹理尺寸小得多的元素。
我最初实现的性能是20fps。然后我创建了一个单一的纹理贴图,其中包含了关卡中使用的所有纹理,这给了我大约3-4额外的fps。24fps对我来说是不够的,我还能尝试什么来优化我的性能呢?
发布于 2012-01-08 21:30:21
一些我能马上想到的事情
根据我的经验,移动设备上的texel调用相当繁重。一定要尽量减小纹理的大小。看看你的项目,如果一个物体只占屏幕的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位纹理,理论上,您使用大约64MB的ram,仅用于纹理存储(甚至不假设mipmap和XNA不放大到两个纹理的幂)(不确定XNA内部是否使用dds/dxt压缩(?))。我可以想象这对于一个移动设备来说是相当高的。
希望这能帮助你解决瓶颈。
发布于 2012-01-08 22:42:52
您应该尝试分析您的应用程序,以检查问题实际上是在图形渲染中还是在其他地方。
有一些工具可以做到这一点,尽管大多数在WP7中工作时都有限制。第一个建议是微软的Windows Phone profiler和PIX图形监控,在帖子中提到。也有XNA Framework Remote Performance Monitor,但据我所知还没有兼容WP7的版本。
https://stackoverflow.com/questions/8775321
复制相似问题