在Apple's tutorial中,关于在ARKit中执行计算机视觉任务的他们指出:
重要
确保一次仅处理一个缓冲区可确保良好 性能。相机回收有限的像素缓冲区池,因此 保留太多缓冲区以进行处理可能会使相机饿死, 关闭捕获会话。将多个缓冲区传递给Vision 处理将减慢每个图像的处理速度,增加延迟 并减少渲染AR的CPU和GPU开销 可视化。
在Swift中,我完全按照他们的建议做了,不,将多个缓冲区保留在队列中以便在另一个线程中处理。果然,ARKit性能会受到影响。 ARKit帧的显示速度与我从队列中取出缓冲区的速度一样快。我想更好地了解其背后的机制。
ARKit如何知道缓冲区被保留?迅速有某种锁定机制吗?