deallocateRenderTarget method

void deallocateRenderTarget(
  1. RenderTarget renderTarget
)

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);
}