我正在拍摄每一帧的快照,应用过滤器,并使用过滤后的图像更新 ARSCNView 的背景内容。一切正常,但屏幕上的所有 UI 元素都有很多延迟。ARSCNView 上没有延迟。
func session(_ session: ARSession, didUpdate frame: ARFrame) {
guard let image = CIImage(image: sceneView.snapshot()) else { return }
// I'm setting a filter to each image here. Which has no effect on the latency.
sceneView.scene.background.contents = context.createCGImage(image, from: image.extent)
}
我知道我可以使用frame.capturedImage
,这使延迟消失了。但是,我也将 AR 对象放置在屏幕上,frame.capturedImage
由于某种原因而忽略,并且sceneView.scene.background.contents
无法重置为其原始来源。所以,我无法关闭图像过滤器。这就是为什么我需要拍摄快照。
我能做些什么来减少 UI 元素的延迟吗?我在屏幕上有一些 UIScrollViews 有很大的滞后。