Металл на iOS: когда читать visibilityResultBuffer? - PullRequest
0 голосов
/ 12 ноября 2018

Согласно документации Apple, мы можем отслеживать образцы, которые проходят тесты глубины и трафарета с setVisibilityResultMode.Результат будет записан в visibilityResultBuffer.Тем не менее, я не могу найти документацию о том, когда я могу получить доступ к visibilityResultBuffer, чтобы прочитать результат.Есть ли обратный вызов, который может сообщить мне, что результат готов?Где я могу найти более подробную документацию или пример о металле visibilityResultMode?

1 Ответ

0 голосов
/ 12 ноября 2018

Безопасно читать результаты видимости на ЦП после завершения буфера команд, содержащего вызовы отрисовки, которые вы тестируете на видимость. Вы можете добавить завершенный блок обработчика в буфер команд, чтобы получать уведомления об этом:

commandBuffer.addCompletedHandler { completedCommandBuffer in
    self.consumeVisibilityResults()
}

Не забудьте вызвать addCompletedHandler(:), прежде чем вызывать commit в буфере команд.

Обратите внимание, что этот обработчик будет вызываться асинхронно после завершения рисования для текущего кадра, поэтому вы не сможете использовать результаты видимости одного кадра в этом же кадре. По этой причине видимость на основе окклюзионных запросов часто имеет одну или две рамки. Вы можете прочитать хороший обзор этой и связанных с ней проблем здесь .

...