Задать вопрос
@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, загружая всю возможную память(даже система упала от этого в первый раз, когда не заметил).
Что это может быть? Когда код вызова этой функции комментирую все нормально.
  • Вопрос задан
  • 377 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Arhin Автор вопроса
Студент
Решение:
https://forum.kerbalspaceprogram.com/index.php?/to...
Дело было в постоянном обьявлении
Texture2D png_tex = new Texture2D(512, 512, TextureFormat.RGB24, false);

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

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

Похожие вопросы