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