我正在使用图形引擎的关卡编辑器。最近,随着一个项目的扩展,我遇到了内存问题。特别是,这个级别非常大,需要加载大约300个不同大小的纹理。一些纹理像2048x2048那么大,其他像256x256或512x512更小。无论如何,编辑器会为此级别消耗1.3GB的内存,并且某些纹理因为抛出内存异常而无法加载。那么我在这里有什么解决方案?XNA内存中加载的纹理太多
现在,我能想到的唯一解决方案是根据可见区域将级别划分为更小的部分并根据需要加载纹理。但我相信这会在现场导航时大大减缓性能。有什么想法吗?关于这个问题,关卡编辑应该有一些标准的方法。
首先,感谢您的回答。现在,虽然我不熟悉基于瓦片的方法,但是一个纹理可以被多个对象使用。它不会在使用它的每个对象的内存中多次加载。我想说明纹理保存在Dictionary中。我不使用内容管理器,我使用Texture2D.FromFile加载纹理。我可以尝试按需求方式。使用内容管理器会保存任何内存吗?我想不是,所以我应该坚持已经实施的方法。 P.S我只负责这些工具,“测量”由其他人完成:) –
muku
2011-01-21 15:16:46
哦,我明白了......内容管理器实际上只是运行时代码,纹理贯穿内容管道。当你试图运行游戏时,我认为你的意思是你的内存不足。但是你描述的机制是相同的概念......存储对纹理的引用,以及在移动时加载/卸载。但要记住,要比屏幕略大一些,这样如果用户做小动作,就不必经常加载/重新加载。 – 2011-01-21 15:25:22