@Arhin
Студент

Как решить утечку памяти в Unity3d для текстур?

В Юнити необходимо было преобразовать изображение с камеры в png и затем отправить по сокету. Для этого были использованы RenderTexture и вот такой кусок кода.
byte[] RenderTextureToPng(RenderTexture rt)
    {
        Texture2D png_tex = new Texture2D(512, 512, TextureFormat.RGB24, false);
        RenderTexture.active = rt;
        png_tex.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0);
        png_tex.Apply();
        return png_tex.EncodeToPNG();
    }


Но неожиданно обнаружилось, что после запуска программы резко начинало возрастать место занимаемое Texture в вкладке Memory, загружая всю возможную память(даже система упала от этого в первый раз, когда не заметил).
Что это может быть? Когда код вызова этой функции комментирую все нормально.
  • Вопрос задан
  • 364 просмотра
Решения вопроса 1
@Arhin Автор вопроса
Студент
Решение:
https://forum.kerbalspaceprogram.com/index.php?/to...
Дело было в постоянном обьявлении
Texture2D png_tex = new Texture2D(512, 512, TextureFormat.RGB24, false);

Хотя я все равно не до конца понял почему он не удаляется сборщиком мусора..
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы