XNA - 保存帧时内存泄漏

时间:2013-05-18 19:38:58

标签: c# memory-leaks xna

我使用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;
    }

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

啊我在其他帖子中找到了回复:

根据这个Texture2D.SaveAsJpeg(以及Texture2D.SaveAsPng)有一个内存泄漏。 (不幸的是)解决方案是创建自己的纹理保存例程。

谢谢XNA。 >>