我正在使用XNA游戏工作室来制作一个类似于Terraria & Starbound的2D Sandbox RPG。
我有一个很棒的瓦片系统,但当屏幕上满是瓦片时,在1920x1200的大小下绘制整个场景仍然需要12-13ms的时间。
我目前有超过15个瓦片集,每个瓦片集都在256x1024纹理上,加上每个瓦片集都有6-7个相同大小的额外瓦片集,用于渲染与其他瓦片的混合。
我想知道,如果我只是在加载时创建一个更大的纹理,并使用SetData()
复制所有的混合纹理,是否会有很大的性能差异。
在屏幕上绘制一个大纹理的18x18部分,比如2048x1024几百次,会不会有性能问题?
我正在使用spritemode.texture
来绘制我的磁贴,这已经提高了一些速度,但我正在尝试剃除更多的毫秒。
发布于 2013-06-08 09:16:34
这个数字似乎相当高,但唯一确定的方法是对其进行分析。SpriteSortMode.Texture
和Deferred
将是最快的,一些不错的举措。如果你可以分享你的spritesheet和渲染代码的样本,那会很好,我不确定你为什么需要所有这些。使用spritebatch的SourceRectangle
重载应该不会影响绘制时间,但同样,确定是否要profile它的唯一方法。
当然,纹理交换越少越好,所以把所有东西打包成一个纹理将是一个好主意,在MSDN上有一个关于它的很好的code sample。
https://stackoverflow.com/questions/16993085
复制相似问题