我正在尝试将RTS游戏的地图存储并显示为texture2d,但地图太大,我得到错误“XNA Framework HiDef配置文件支持最大Texture2D大小为4096”。我想在一个纹理中使用整个地图的原因是我可以利用spriteBatch在游戏相机中使用的源/目标rectnagle绘制方法。如果这显然不是一个坏主意,我该如何存储和显示大图像?
答案 0 :(得分:2)
您无法绕过XNA中的纹理大小限制。使用多个纹理并在不同的地方绘制它们是非常合理的。处理边界只是少量的额外逻辑。
不要忘记4096 x 4096纹理已经是一个高达64MB的纹理内存,未压缩(如果DXT压缩,至少10MB)。
如果你担心表现 - 不要。 “源矩形”参数可以启用纹理图集 - 但这不是您在此处所做的。
此外,通常最好通过将翻译Matrix
传递给SpriteBatch.Begin
,然后Draw
固定坐标处的所有内容(包括背景)来实现游戏相机。您甚至不需要为背景指定源矩形 - 视口只会剪切它。
如果要导入大于4096平方的纹理,可以创建内容管道扩展,将这些大纹理切割成较小的纹理。或者,如果您只有少量固定地图,则只需在图像编辑器中将它们分开即可。