WebGL 对象是否被垃圾回收?

Dan*_*sen 6 javascript garbage-collection webgl

在我分配的 JavaScript 内存中(例如 ArrayBuffer),当 GC 不再有任何引用时,它就会被释放,正如我所理解的那样,对吗?

WebGL 对象(如缓冲区或纹理)与 GPU 上的内存块相关联,由gl.bufferData()或分配gl.textureImage2D()

我想知道:如果我放弃对 WebGLTexture 或 WebGLBuffer 对象的最后一个引用,它是否会被垃圾收集,并由 JavaScript VM 自动释放其 GPU 内存块?

app*_*ple 4

是的


规格来看

请注意,当 JS 对象被销毁时,底层 GL 对象将自动标记为删除


但您应该注意到,当您放弃最后一个引用时,该对象可能不会被销毁,因此调用deleteBuffer.