Я создаю MTLTexture от CVImageBuffer (от камеры и игроков) с помощью CVMetalTextureCacheCreateTextureFromImage, чтобы получить CVMetalTexture, а затем CVMetalTextureGetTexture, чтобы получить MTLTexture.
Проблема, которую я вижу, заключается в том, что когда я позже визуализую текстуру с помощью Metal, я иногда вижу, что видеокадры выведены из строя (визуально она заикается вперед и назад во времени), по-видимому, потому что CoreVideo модифицирует базовый CVImageBuffer хранилище и MTLTexture просто указывают там.
Есть ли способ заставить CoreVideo не касаться этого буфера и использовать другой из его пула, пока я не выпущу объект MTLTexture?
Мое текущее обходное решение - это blitting текстура с помощью MTLBlitCommandEncoder, но поскольку мне просто нужно удерживать текстуру в течение ~ 30 миллисекунд, что кажется ненужным.