根据Apple的文档,我们可以监视通过setVisibilityResultMode
通过深度和模版测试的样品。结果将被写入visibilityResultBuffer
。但是,找不到有关何时可以访问visibilityResultBuffer
来读取结果的任何文档。是否有任何回调可以通知我结果已准备好?在哪里可以找到有关金属visibilityResultMode
的更详细的文档或示例?
答案 0 :(得分:2)
一旦包含要测试可见性的绘制调用的命令缓冲区完成,就可以安全地读取CPU上的可见性结果。您可以将完整的处理程序块添加到命令缓冲区中,以获取有关以下内容的通知:
commandBuffer.addCompletedHandler { completedCommandBuffer in
self.consumeVisibilityResults()
}
在命令缓冲区上调用addCompletedHandler(:)
之前,请记住先调用commit
。
请注意,在完成当前帧的绘制之后,将异步调用此处理程序,因此您将无法使用同一帧中一帧的可见性结果。因此,基于遮挡查询的可见性通常具有一两个延迟帧。您可以阅读有关here和相关问题的很好的概述。