Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于XNA 2D瓷砖的纹理大小_C#_Xna_Textures_Tile - Fatal编程技术网

C# 基于XNA 2D瓷砖的纹理大小

C# 基于XNA 2D瓷砖的纹理大小,c#,xna,textures,tile,C#,Xna,Textures,Tile,我正在使用XNA game studio制作一个类似于Terraria&Starbound的2D沙盒RPG。 我有一个很棒的瓷砖系统,但当屏幕上满是瓷砖时,以1920 x 1200绘制整个场景仍然需要12-13毫秒。 我目前有15个以上的瓷砖集,每个瓷砖集都在256 x 1024纹理上,每个瓷砖集都有6-7个相同大小的额外瓷砖集,用于渲染与其他瓷砖的混合。 我想知道如果我只是在加载时创建一个更大的纹理并使用SetData()复制所有混合纹理,是否会对性能产生很大影响 在屏幕上绘制大纹理的18 x

我正在使用XNA game studio制作一个类似于Terraria&Starbound的2D沙盒RPG。
我有一个很棒的瓷砖系统,但当屏幕上满是瓷砖时,以1920 x 1200绘制整个场景仍然需要12-13毫秒。
我目前有15个以上的瓷砖集,每个瓷砖集都在256 x 1024纹理上,每个瓷砖集都有6-7个相同大小的额外瓷砖集,用于渲染与其他瓷砖的混合。
我想知道如果我只是在加载时创建一个更大的纹理并使用
SetData()
复制所有混合纹理,是否会对性能产生很大影响

在屏幕上绘制大纹理的18 x 18部分(如2048 x 1024)数百次是否存在性能问题


我正在使用
spritemode.texture
绘制我的平铺,这已经提高了一点速度,但我正在尝试再缩短几毫秒。

这个数字似乎相当高,但唯一确定的方法是对其进行分析
SpriteSortMode。纹理
延迟
将是最快的,一些不错的移动方式。如果你能分享一个SpriteSheet和渲染代码的示例,那就太好了,我不知道你为什么需要这些。使用spritebatch的
SourceRectangle
重载不应影响绘制时间,但这是确定是否需要绘制时间的唯一方法


当然,纹理交换越少越好,因此将所有内容打包成一个纹理将是一个好主意,而且MSDN上有一个很好的说明。

欢迎使用。如果您正在寻找一个特定的解决方案,您可能会共享您的代码,或者其中解决问题的部分(如果代码是可复制的,这会有所帮助)。