根据 Apple 的文档,我们可以使用 setVisibilityResultMode
监控通过深度和模板测试的样本。结果将被写入visibilityResultBuffer
。但是,我找不到任何关于何时可以访问 visibilityResultBuffer
来读取结果的文档。是否有任何回调可以通知我结果已准备好?我在哪里可以找到有关 metal 的 visibilityResultMode
的更多详细文档或示例?
最佳答案
一旦包含您正在测试可见性的绘制调用的命令缓冲区完成,就可以安全地在 CPU 上读取可见性结果。您可以将已完成的处理程序 block 添加到命令缓冲区以得到通知:
commandBuffer.addCompletedHandler { completedCommandBuffer in
self.consumeVisibilityResults()
}
请记住在对命令缓冲区调用 commit
之前调用 addCompletedHandler(:)
。
请注意,在完成当前帧的绘制后,将异步调用此处理程序,因此您将无法在同一帧中使用一帧的可见性结果。出于这个原因,基于遮挡查询的可见性通常会有一两帧的滞后。您可以阅读此问题和相关问题的详细概述 here .
关于ios - iOS 上的 Metal : when to read visibilityResultBuffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53259550/