Ios CVOpenGLESTextureCache&;CVMetalTextureCache的正确用法
关于CVOpenGLESTextureCache和CVMetalTextureCache的可用文档很少,更具体地说,关于它们的正确用法。为了将CVPixelBuffer映射到OpenGLES纹理,我们创建纹理缓存,如下所示:Ios CVOpenGLESTextureCache&;CVMetalTextureCache的正确用法,ios,opengl-es,avfoundation,core-video,cvpixelbuffer,Ios,Opengl Es,Avfoundation,Core Video,Cvpixelbuffer,关于CVOpenGLESTextureCache和CVMetalTextureCache的可用文档很少,更具体地说,关于它们的正确用法。为了将CVPixelBuffer映射到OpenGLES纹理,我们创建纹理缓存,如下所示: let err = CVOpenGLESTextureCacheCreate(kCFAllocatorDefault, nil, oglContext as CVEAGLContext, nil, &textureCache) if err !=
let err = CVOpenGLESTextureCacheCreate(kCFAllocatorDefault, nil, oglContext as CVEAGLContext, nil, &textureCache)
if err != 0 {
NSLog("Error at CVOpenGLESTextureCacheCreate %d", err)
success = false
break bail
}
然后我们使用CVOpenGLESTextureCacheCreateTextureFromImage(…)API从CVPixelBuffer创建OpenGLES纹理
金属流完全相同,首先创建CVMetalTextureCache
if CVMetalTextureCacheCreate(kCFAllocatorDefault, nil, device!, nil, &metalTextureCache) == kCVReturnSuccess {
}
然后使用CVMetalTextureCacheCheCreateTextureFromImage(…)API从CVPixelBuffer创建金属纹理
我的问题是:
1。我认为你可以用“纹理”替换“纹理缓存”的所有实例,所以在你的应用程序中使用尽可能多的纹理。将具有类似使用模式的图像分组/映射到一个大纹理中可能会有性能优势。测量一下。也就是说,我曾经创建了数百个GLE纹理缓存纹理,得到的结果比预期的要慢,但那是几年前的事了,所以。。。测量它。我们如何准确地测量它,因为有这么多线程和渲染路径同时执行,视频帧不断出现?@DeepakSharma你对此有更好的理解吗?有什么线索或材料可以帮助你吗?我还试图了解更多关于CVMetalTextureCache和其他核心视频类和函数的工作原理,如CVPixelBufferPool等@Rohansap,但并不完全如此。我在上面贴了更多的问题,但它仍然是个谜