deallocateRenderTarget method
Implementation
void deallocateRenderTarget(RenderTarget renderTarget) {
final renderTargetProperties = properties.get(renderTarget);
if (renderTarget.depthTexture != null) {
renderTarget.depthTexture!.dispose();
properties.remove( renderTarget.depthTexture );
}
if (renderTarget is WebGLCubeRenderTarget) {
for (int i = 0; i < 6; i++) {
gl.deleteFramebuffer(renderTargetProperties["__webglFramebuffer"][i]);
if (renderTargetProperties['__webglFramebuffer'][ i ] is List) {
for (int level = 0; level < renderTargetProperties['__webglFramebuffer'][ i ].length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties['__webglFramebuffer'][ i ][ level ] );
} else {
_gl.deleteFramebuffer( renderTargetProperties['__webglFramebuffer'][ i ] );
}
if (renderTargetProperties["__webglDepthbuffer"] != null) {
gl.deleteRenderbuffer(renderTargetProperties["__webglDepthbuffer"][i]);
}
}
} else {
if (renderTargetProperties['__webglFramebuffer'] is List) {
for (int level = 0; level < renderTargetProperties['__webglFramebuffer'].length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties['__webglFramebuffer'][ level ] );
} else {
_gl.deleteFramebuffer( renderTargetProperties['__webglFramebuffer'] );
}
gl.deleteFramebuffer(renderTargetProperties["__webglFramebuffer"]);
if (renderTargetProperties["__webglDepthbuffer"] != null) {
gl.deleteRenderbuffer(renderTargetProperties["__webglDepthbuffer"]);
}
if (renderTargetProperties["__webglMultisampledFramebuffer"] != null) {
gl.deleteFramebuffer(renderTargetProperties["__webglMultisampledFramebuffer"]);
}
if (renderTargetProperties["__webglColorRenderbuffer"] != null) {
for (int i = 0; i < renderTargetProperties['__webglColorRenderbuffer'].length; i ++ ) {
if ( renderTargetProperties['__webglColorRenderbuffer'][ i ] != null) _gl.deleteRenderbuffer( renderTargetProperties['__webglColorRenderbuffer'][ i ] );
}
}
if (renderTargetProperties["__webglDepthRenderbuffer"] != null) {
gl.deleteRenderbuffer(renderTargetProperties["__webglDepthRenderbuffer"]);
}
}
final textures = renderTarget.textures;
for (int i = 0, il = textures.length; i < il; i++) {
final attachmentProperties = properties.get(textures[i]);
if (attachmentProperties["__webglTexture"] != null) {
gl.deleteTexture(attachmentProperties["__webglTexture"]);
info.memory["textures"] = info.memory["textures"]! - 1;
}
properties.remove(textures[i]);
}
properties.remove(renderTarget);
}