Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当我不需要纹理时,如何释放纹理的GPU内存?_Javascript_Three.js - Fatal编程技术网

Javascript 当我不需要纹理时,如何释放纹理的GPU内存?

Javascript 当我不需要纹理时,如何释放纹理的GPU内存?,javascript,three.js,Javascript,Three.js,我有一个webVR应用程序,我必须在其中显示FPS。因此,我一直在使用Sprite和SpriteMaterial来显示FPS 对于每个FPS更改,我都执行以下操作- 1) 删除当前的精灵 2) 使用新FPS创建纹理(使用canvas) 3) 创建一个新的Sprite,并在SpriteMaterial中设置创建的纹理 4) 在场景中添加精灵 输出是这样的- 我的问题是,当我删除上一个纹理时,它不会释放/使它为纹理占用的GPU内存无效。所以,每次我创建一个新的纹理,GPU内存使用率都在上升。请查看

我有一个webVR应用程序,我必须在其中显示FPS。因此,我一直在使用
Sprite
SpriteMaterial
来显示FPS

对于每个FPS更改,我都执行以下操作-

1) 删除当前的
精灵

2) 使用新FPS创建纹理(使用
canvas

3) 创建一个新的
Sprite
,并在
SpriteMaterial
中设置创建的纹理

4) 在场景中添加
精灵

输出是这样的-

我的问题是,当我删除上一个纹理时,它不会释放/使它为纹理占用的GPU内存无效。所以,每次我创建一个新的纹理,GPU内存使用率都在上升。请查看以下图片-

最初-

一段时间后-

我已经尝试了以下代码,但它没有清除纹理的GPU内存-

previous_sprite_mesh.material.map.dispose();
scene.remove(previous_sprite_mesh);
谁能告诉我,我应该如何清除GPU内存中使用的纹理之前?此外,任何其他方法,以实现我试图做的,也将受到赞赏

提前谢谢


Three.js version-77

为什么每次都需要创建新的精灵和纹理?你每次也会创造一种新的精神材料吗?您应该只创建一次,然后重新绘制canvas@2pha是的,这样问题就解决了。为什么每次都需要创建一个新的精灵和纹理?你每次也会创造一种新的精神材料吗?您应该只创建一次,然后重新绘制canvas@2pha是的,这样问题就解决了。