我正在使用XNA游戏工作室制作类似于Terraria& amp;的2D沙盒RPG。星界边境。
我有一个很棒的瓷砖系统,但是当屏幕充满瓷砖时,它仍需要12-13毫秒才能在1920 x 1200处绘制整个场景。
我有超过15个瓷砖套,目前每个瓷砖套在256 x 1024纹理上加上每个瓷砖套有6-7个相同尺寸的额外瓷砖套,用于渲染与其他瓷砖的混合。
我想知道如果我在加载时创建一个更大的纹理并使用SetData()
复制所有混合纹理,它是否会产生很大的性能差异。
在屏幕上绘制一个大尺寸纹理的18 x 18部分(例如2048 x 1024几百次)是否有任何性能问题?
我正在使用spritemode.texture
绘制我的瓷砖,这已经提高了一点速度,但我想减少几毫秒。
答案 0 :(得分:0)
这个数字似乎很高,但找到它的唯一可靠方法就是对它进行分析。 SpriteSortMode.Texture
和Deferred
将是最快的,一些很好的举动。如果你可以分享你的spritesheets样本并呈现很好的代码,我不确定为什么你需要所有这些。使用spritebatch的SourceRectangle
重载不应该影响您的绘制时间,但同样,唯一的方法是确定是否profile。
当然,纹理越少越好,所以将所有东西打包成1个纹理都是个好主意,MSDN上有一个很好的code sample。