three.js场景中不断更换模型的材质贴图,内存一直在增加,最终浏览器会崩溃,如何解决?

发布于 2022-09-12 23:08:58 字数 494 浏览 45 评论 0

项目使用THREE.js构建
简单的结构如下:

var geometry = new THREE.SphereGeometry(500, 60, 40);
var texture = new THREE.TextureLoader().load(img);
var material = new THREE.MeshBasicMaterial({
        map: texture
});
var mesh = new THREE.Mesh(geometry, material);
scene.add(mesh)

然后场景中有不同的点击按钮,每次点击就是更换mesh模型的材质贴图:

var loader = new THREE.TextureLoader().load(new_img);
material.map = loader

(在真机上运行)点击切换多次之后,浏览器的内存会越占越大,最后导致浏览器崩溃刷新,请问有什么好的解决方法?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

天气好吗我好吗 2022-09-19 23:08:58

参考 https://threejs.org/docs/#man...,需要自己手动调用dispose方法执行释放处理

等往事风中吹 2022-09-19 23:08:58

我现在的做法是每次切换贴图的时候,调用一次loader.dispose()释放内存,但还是不能解决内存导致浏览器崩溃的问题,请问切换的还需要其他什么操作呢?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文