private void ReadingLoop_CaptureReady(object sender, CaptureReadyEventArgs e) { using (var colorImage = e.Capture.ColorImage) { var was = colorImageVisualizer?.Update(colorImage); UpdateFpsIfNeeded(was, colorFps, nameof(ColorFps)); } using (var depthImage = e.Capture.DepthImage) { var was = depthImageVisualizer?.Update(depthImage); UpdateFpsIfNeeded(was, depthFps, nameof(DepthFps)); if (depthImage != null && transformation != null && depthOverColorImage != null && depthOverColorImageVisualizer != null) { // Object can be disposed from different thread // As a result depthOverColorImage may be disposed while we're working with it // To protect from such scenario, keep reference to it using (var depthOverColorImageRef = depthOverColorImage.DuplicateReference()) { transformation.DepthImageToColorCamera(depthImage, depthOverColorImageRef); depthOverColorImageVisualizer?.Update(depthOverColorImageRef); } } } using (var irImage = e.Capture.IRImage) { var was = irImageVisualizer?.Update(irImage); UpdateFpsIfNeeded(was, irFps, nameof(IRFps)); } }
private void ReadingLoop_CaptureReady(object sender, CaptureReadyEventArgs e) => trackingLoop.Enqueue(e.Capture);