У меня иногда возникает проблема с моим MTKView
рендерером, останавливающимся при получении currentRenderPassDescriptor
для 1.0s. Согласно документам, это связано либо с тем, что устройство представления не установлено (оно есть), либо с недоступными чертежами.
Если нет доступных отрисовок, я не вижу возможности просто немедленно освободить или пропустить этот видеокадр. Цикл рендеринга остановится на 1.0 с.
Есть ли обходной путь для этого? . Любая помощь будет оценена.
Мой рабочий процесс - это набор шейдерных ядер, а не один финальный вершинный шейдер. Я мог бы сделать рисование конечного шейдера на своей собственной текстуре (вместо использования currentPassDescriptor
), а затем обмануть эту текстуру в currentDrawable
представления - но при получении этого рисованного мы возвращаемся к тому же самому сваливанию ситуация.
Должен ли я полностью избавиться от MTKView
и вернуться к использованию CAMetalLayer
? Опять же, я подозреваю, что возникнут те же проблемы с задержкой. Есть ли способ установить maximumDrawableCount
на MTKView
, как на CAMetalLayer
?
Я немного сбит с толку, поскольку, согласно Metal System Trace, моя работа неизменно завершается при скорости 5,0 мс на кадр на iMac 2015 R9 M395.