好了,我已经让我的游戏接近完成,一切都在它完美地运行,它在我的电脑上运行得相当好(运行在大约99Mb内存)。但当我在我的xBox上运行它时,我往往会偶尔对主要玩家的角色感到紧张。我在我的游戏中确实有爆炸和广告牌效果,但是我在xBox图形处理器上做了所有的渲染(这最初是在爆炸发生时引起抖动,但现在不是了)。抖动也是随机的,当我产生大量单元或执行大量动作时就不会了。我不知道为什么会发生这样的事情,有什么想法吗?
附注:游戏确实集成了多线程,在一个线程上更新,在另一个线程上渲染。
发布于 2011-02-21 20:56:22
听起来像是垃圾收集器引起了你的不安。在Xbox上,每当分配1MB的数据时,它就会启动。所需的时间取决于您的程序中使用了多少引用。
使用XNA Framework Remote Performance Monitor for Xbox 360来判断您是否有垃圾收集问题。阅读肖恩·哈格里夫斯的“How to tell if your garbage collection is too slow”。
如果您确实遇到了垃圾收集问题,那么您将需要一个能够确定哪些对象正在生成垃圾的分析器。CLR Profiler for the .NET Framework 2.0是一种选择。默认情况下,XNA4.0不支持它,但是Dave on Crappy Coding有一个workaround。有关解决垃圾收集问题的策略,请阅读Shawn Hargreaves的Twin paths to garbage collection Nirvana。
更新: CLR Profiler for the .NET Framework 4.0现已推出。
发布于 2011-02-21 15:14:34
听起来你的渲染线程只是坐在那里等待更新线程完成它所做的事情,这会导致“抖动”。也许可以放入一些代码,记录一个线程在被允许访问另一个线程之前必须等待多长时间,以确定这是否真的是问题所在。
https://stackoverflow.com/questions/5063190
复制相似问题