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