0

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;
    }

どんな助けでも大歓迎です。

4

1 に答える 1

0

ああ、私は他のスレッドで応答を見つけました:

この Texture2D.SaveAsJpeg (および Texture2D.SaveAsPng) によると、メモリ リークがあります。解決策は (残念ながら) 独自のテクスチャ保存ルーチンを作成することです。

ありがとうXNA。>.>

于 2013-05-18T20:47:01.073 に答える