2

Apple关于在 ARKit 中执行计算机视觉任务的教程中,他们指出:

重要的

确保一次只处理一个缓冲区可确保良好的性能。相机会回收有限的像素缓冲区池,因此保留过多的缓冲区进行处理可能会使相机饿死并关闭捕获会话。将多个缓冲区传递给 Vision 进行处理会减慢每个图像的处理速度,增加延迟并减少渲染 AR 可视化的 CPU 和 GPU 开销。

在 Swift 中,我已经完成了他们建议您不应该的事情,在队列中保留多个缓冲区以便在另一个线程中处理。果然,ARKit 的性能受到了影响。ARKit 帧仅在我从队列中出列缓冲区时才会显示。我想更好地了解这背后的机制。

ARKit 如何知道缓冲区正在被保留?swift中有某种锁定机制吗?

4

0 回答 0