Я пытаюсь сохранить каждый отснятый кадр моей игры XNA на жесткий диск.поэтому в каждом кадре я называю этот код:
protected override void LoadContent()
{
....
colorRT = new RenderTarget2D(GraphicsDevice, backbufferWidth, backbufferHeight, false, SurfaceFormat.Color, DepthFormat.Depth24);
lightRT = new RenderTarget2D(GraphicsDevice, backbufferWidth, backbufferHeight, false, SurfaceFormat.Color, DepthFormat.None);
specRT = new RenderTarget2D(GraphicsDevice, backbufferWidth, backbufferHeight, false, SurfaceFormat.Color, DepthFormat.None);
....
}
using (Stream stream = File.OpenWrite("color_"+frameNumber+".png"))
{
colorRT.SaveAsPng(stream, colorRT.Width, colorRT.Height);
stream.Flush();
stream.Close();
stream.Dispose();
}
using (Stream stream = File.OpenWrite("light_" + frameNumber + ".png"))
{
lightRT.SaveAsPng(stream, lightRT.Width, lightRT.Height);
stream.Flush();
stream.Close();
stream.Dispose();
}
using (Stream stream = File.OpenWrite("spec_" + frameNumber + ".png"))
{
specRT.SaveAsPng(stream, specRT.Width, specRT.Height);
stream.Flush();
stream.Close();
stream.Dispose();
}
System.GC.Collect();
frameNumber++;
, но если этот код включен, потребление памяти увеличивается и увеличивается, и через полминуты или около того я получаю исключение outOfMemory.Я добавил вызовы flush, close, dispose и GC, чтобы попытаться решить проблему, но это ничего не меняет.
Кто-нибудь знает, что я делаю неправильно?