如何清理当前版本的textureCache A-frame?

How to clean up textureCache A-frame at current version?

我正在开发一个多摄像头流媒体应用程序,我注意到切换摄像头后内存使用量不断增加。我在 hls.js 一侧清理。但我没有看到任何方法可以在框架中做到这一点。 我正在使用 1.2.0

只找到老post推荐
document.querySelector('a-scene').systems.material.textureCache 和 运行 .dispose()

这看起来像是在 0.3.0 版本上工作,但从那以后就没有了。

有没有清理纹理的方法,或者这现在是自动发生的吗?

据我所知,textureCache 是一个承诺加载纹理 (image, video) 的对象。

有一个 clearTextureCache 函数,但它会清除对象,而不处理加载的纹理。

我会尝试遍历 textureCache,获取 THREE.Texture 对象并对它们调用 .dispose()。然后你可以做 clearTextureCache() 来清理它。在下面的示例中 - 任何单击 io window 都会在控制台中打印缓存的纹理:

<script src="https://aframe.io/releases/1.2.0/aframe.min.js"></script>
<script>
  AFRAME.registerComponent("foo", {
    init: function() {
      window.addEventListener("click", e => {
        const textureCache = this.el.systems.material.textureCache;
        console.log("Textures in the cache:")
        for (let key in textureCache) {
          textureCache[key].then(val => console.log(val))
        }
      })
    }
  })
</script>
<a-scene foo>
  <a-image position="-1 1.6 -2" src="https://i.imgur.com/wjobVTN.jpeg"></a-image>
  <a-image position="1 1.6 -2" src="https://i.imgur.com/AD3MbBi.jpg"></a-image>
  <a-sky color="#ECECEC"></a-sky>
</a-scene>