Как преобразовать `CVOpenGLESTextureCacheRef` в` CVMetalTextureCacheRef`? - PullRequest
0 голосов
/ 21 июня 2019

Мне нужно преобразовать следующий код в GPUImage pod из OpenGL в Metal, возможно ли это сделать?

CVReturn err = CVOpenGLESTextureCacheCreate(kCFAllocatorDefault, NULL, [self context], NULL, &_coreVideoTextureCache);

Я попробовал следующий код, но он не работает.

CVMetalTextureCacheRef CV_NULLABLE * CV_NONNULL _coreMetalVideoTextureCache = (CVMetalTextureCacheRef CV_NULLABLE * CV_NONNULL)_coreVideoTextureCache;
CVReturn err = CVMetalTextureCacheCreate(kCFAllocatorDefault, NULL, MTLCreateSystemDefaultDevice(), NULL, _coreMetalVideoTextureCache);

1 Ответ

0 голосов
/ 27 июня 2019

Ваш указатель неверен.Вы можете просто передать адрес CVMetalTextureCacheRef напрямую:

CVMetalTextureCacheRef coreMetalVideoTextureCache = NULL;

CVReturn err = CVMetalTextureCacheCreate(kCFAllocatorDefault,
                                         NULL,
                                         MTLCreateSystemDefaultDevice(),
                                         NULL,
                                         &coreMetalVideoTextureCache);

Это предполагает, что вы работаете на физическом устройстве.Это не будет работать в iOS Simulator до iOS 13 и macOS 10.15.

...