我使用 XNA 游戏项目来创建我的 3D 场景的帧。但是我在使用 MemoryStream 时发生了内存泄漏。下面的代码被称为 Draw 函数的一部分。
byte[] FrameSave()
{
int w = GraphicsDevice.PresentationParameters.BackBufferWidth;
int h = GraphicsDevice.PresentationParameters.BackBufferHeight;
//pull the picture from the buffer
int[] backBuffer = new int[w * h];
GraphicsDevice.GetBackBufferData(backBuffer);
//copy into a texture
Texture2D texture = new Texture2D(GraphicsDevice, w, h, false, GraphicsDevice.PresentationParameters.BackBufferFormat);
texture.SetData(backBuffer);
MemoryStream ms = new MemoryStream();
texture.SaveAsJpeg(ms, w, h); //MEMORYLEAK
byte[] zframe = ms.ToArray();
ms.Close();
ms.Dispose();
texture.Dispose();
return zframe;
}
任何帮助将不胜感激。