在 XNA (Monogame) 中加载大图像,非常不稳定
Loading large images in XNA (Monogame), very unstable
在我的游戏中,我试图加载非常大的 10,000 x 10,000 png 图像(它们需要那么大,因为我使用大型非重复 4k 纹理作为背景),但是加载它们使用
Texture2D[] CMap = new Texture2D[10]; //This texture is 4k 10,000*10,000
Texture2D[] Map = new Texture2D[10]; //This texture is just 2,500* 2,500, it's for collision
...
Map[i] = Content.Load<Texture2D>(PathString);
CMap[i] = Content.Load<Texture2D>(cPathString);
很偶然。我时不时会收到此错误
An unhandled exception of type 'System.InvalidOperationException' occurred in MonoGame.Framework.dll
Additional information: This image format is not supported
修复此错误的方法是简单地将声明剪切并粘贴到同一区域的其他位置,但在其他声明之前或之后。我猜这是一个内存管理问题,XNA(我实际上使用的是 Monogame)很难处理如此大的纹理。
有时它会加载前两个贴图纹理,但之后的第三个贴图纹理或之后的贴图纹理会给我一个错误,所以我知道代码大部分都能正常工作,只是由于某种原因非常不稳定。那么我可以做些什么来解决这个问题吗?
此外,我在运行时加载这些纹理。我所有的地图都会同时占用我想象中的公羊。
我相信 XNA 只支持最大尺寸为 4096x4096 的纹理。任何比这更大的,你必须分开你的纹理。
在我的游戏中,我试图加载非常大的 10,000 x 10,000 png 图像(它们需要那么大,因为我使用大型非重复 4k 纹理作为背景),但是加载它们使用
Texture2D[] CMap = new Texture2D[10]; //This texture is 4k 10,000*10,000
Texture2D[] Map = new Texture2D[10]; //This texture is just 2,500* 2,500, it's for collision
...
Map[i] = Content.Load<Texture2D>(PathString);
CMap[i] = Content.Load<Texture2D>(cPathString);
很偶然。我时不时会收到此错误
An unhandled exception of type 'System.InvalidOperationException' occurred in MonoGame.Framework.dll
Additional information: This image format is not supported
修复此错误的方法是简单地将声明剪切并粘贴到同一区域的其他位置,但在其他声明之前或之后。我猜这是一个内存管理问题,XNA(我实际上使用的是 Monogame)很难处理如此大的纹理。
有时它会加载前两个贴图纹理,但之后的第三个贴图纹理或之后的贴图纹理会给我一个错误,所以我知道代码大部分都能正常工作,只是由于某种原因非常不稳定。那么我可以做些什么来解决这个问题吗?
此外,我在运行时加载这些纹理。我所有的地图都会同时占用我想象中的公羊。
我相信 XNA 只支持最大尺寸为 4096x4096 的纹理。任何比这更大的,你必须分开你的纹理。