基于XNA二维贴图的纹理大小

本文关键字:纹理 二维 XNA 基于 | 更新日期: 2023-09-27 18:17:22

我正在使用XNA游戏工作室制作类似于《Terraria》的2D沙盒RPG;Starbound。
我有一个很棒的贴图系统,但是当屏幕上满是贴图时,在1920 x 1200的分辨率下绘制整个场景仍然需要12-13毫秒。
我目前有超过15个贴图集,每个贴图集都在256 × 1024的纹理上,每个贴图集都有6-7个相同大小的额外贴图集,用于渲染与其他贴图的混合。我想知道如果我只是在加载时创建一个更大的纹理,并使用SetData()复制所有的混合纹理,是否会产生很大的性能差异。

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

我正在使用spritemode.texture来绘制我的瓷砖,这已经提高了一点速度,但我正试图减少几毫秒

基于XNA二维贴图的纹理大小

这个数字似乎相当高,但唯一确定的方法是对它进行分析。SpriteSortMode.TextureDeferred将是最快的,一些好的移动到那里。如果你能分享你的精灵表和渲染代码的样本,那就太好了,我不确定你为什么需要所有这些。使用SourceRectangle超载spritebatch不应该影响你的绘制时间,但是再次强调,确定它的唯一方法是分析它。

当然,纹理交换越少越好,所以将所有内容打包成一个纹理将是一个好主意,并且在MSDN上有一个很好的代码示例。