首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在windows phone的xna中优化性能

如何在windows phone的xna中优化性能
EN

Stack Overflow用户
提问于 2012-01-08 12:09:51
回答 2查看 650关注 0票数 1

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

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

EN

回答 2

Stack Overflow用户

发布于 2012-01-08 21:30:21

一些我能马上想到的事情

  • 它是否有专用的图形处理器和内存或者使用共享内存?
  • 你有没有尝试将纹理扩展到2的幂大小(尽管只有加载时间可能会改善)。
  • 您是否正在使用mipmap或其他类型的纹理过滤?
  • 它正在尝试收集多少个纹理元素?
  • 您是否尝试过使用1 x 1的纹理,只是为了看看这是否真的是您的瓶颈?

根据我的经验,移动设备上的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压缩(?))。我可以想象这对于一个移动设备来说是相当高的。

希望这能帮助你解决瓶颈。

票数 2
EN

Stack Overflow用户

发布于 2012-01-08 22:42:52

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8775321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档