Windows phone 7 如何在xna for windows phone中优化性能

Windows phone 7 如何在xna for windows phone中优化性能,windows-phone-7,xna,Windows Phone 7,Xna,在我游戏的一个关卡中,我要画很多大的纹理。为了让你知道我说的是什么,这些是纹理大小和数量的水平。 448x420-3、315x400-2、305x429-3、366x167-1、356x265-4、401x343-2、387x251-1加上大约20个纹理尺寸小得多的元素 我最初实现的性能是20fps。然后我创建了一个纹理贴图,其中包含关卡中使用的所有纹理,这给了我大约3-4帧的额外速度。24fps对我来说是不够的,我还可以尝试什么来优化我的性能呢?一些我可以在一分钟内想到的事情 它有专用GPU

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


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

一些我可以在一分钟内想到的事情

  • 它有专用GPU和内存还是使用共享内存
  • 您是否尝试过将纹理扩展到两个大小的幂次(尽管只有加载时间可能会提高)
  • 您使用的是mipmap还是其他类型的纹理过滤
  • 它要收集多少texel
  • 您是否尝试过使用1乘1的纹理,只是为了看看这是否真的是您的瓶颈
根据我的经验,移动设备上的texel通话相当频繁。一定要尽量减少纹理的大小。看看你的项目,如果一个对象只占屏幕的10%,它真的需要128x128或更大的纹理吗? 我不知道你用的是什么样的项目和目标设备,但448x420的纹理(非二次幂?!)对于一款手机游戏来说似乎有点过火了。事实上,我建议你尽量保持在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,仅用于纹理存储(甚至不假设mipmaps和XNA没有放大到两个纹理的倍数)(不确定XNA是否在内部使用dds/dxt压缩(?)。我可以想象这对于移动设备来说是相当高的


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

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


有一些工具可用于此,尽管大多数在WP7中工作时都有限制。文章中提到的第一个建议是微软和PIX的图形监控。还有,但据我所知,没有与WP7兼容的版本。

1x1纹理建议非常容易测试,因此说明它应该始终是第一件要尝试的事情。事实上,使用纹理图集只能以3-4 fps的速度改善效果,这让我对程序的其余部分产生了怀疑。