的。當我在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'? –