的。当我在XNA游戏截图做,每个texture.SaveAsPng
占用一些内存,它似乎并没有返回到游戏。所以最终我耗尽了内存。我试过纹理数据保存到FileStream
和MemoryStream
,希望我可以从那里保存为Bitmap
,但结果是一样的。有没有办法来强制释放此内存或者一些解决方法,可以让我得到的图像数据,并保存它,而不会在内存溢出异常一些其他的方式?挽救了许多截图依次用Texture2D.SaveAsPng导致内存不足的异常
sw = GraphicsDevice.Viewport.Width;
sh = GraphicsDevice.Viewport.Height;
int[] backBuffer = new int[sw * sh];
GraphicsDevice.GetBackBufferData(backBuffer);
using(Texture2D texture = new Texture2D(GraphicsDevice, sw, sh, false,
GraphicsDevice.PresentationParameters.BackBufferFormat))
{
texture.SetData(backBuffer);
using(var fs = new FileStream("screenshot.png", FileMode.Create))
texture.SaveAsPng(fs, sw, sh); // ← this line causes memory leak
}
你能张贴生产的“内存泄漏”的小例子吗? –
你可以在保存纹理的地方显示代码吗? –
纹理'Texture2D'? –