ios - iOS 上的 Metal : when to read visibilityResultBuffer?

标签 ios metal

根据 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/

相关文章:

iphone - UITableView numberOfRowsInSection

IOS:检查 NSString 的一部分

c++ - 将 QOpenGLWidget 子类转换为使用 Metal 而不是 OpenGL 的子类是否可行?

python - Metal 火车出现意外的关键字参数 'n_epochs'

ios - 如何在iphone或mac中识别可用的 Metal 计算设备

ios - 获取日期格式 | swift | iOS系统

ios - 从 4 个带有图像的自定义按钮中选择一个按钮

ios - 沙盒应用程序内购买恢复以前登录的 Apple 帐户的购买

ios - 当图像改变大小时 MTKView 显示 CIImage 出错

ios - Metal alpha 混合不起作用