【发布时间】:2020-08-10 02:47:17
【问题描述】:
在CVPixelBuffer中,有没有一种方法可以简单地使用copyMemory以外的指针从yuv数据指针的基地址指向y,u,v平面来创建纹理?
通过copyMemory创建纹理的方法大约需要0.5ms,但我想获得更好的速度。
我知道 OpenGL 和 DirextX 可以通过传递指针并让 GPU 生成纹理来获得更快的速度。
请告诉我任何更快的纹理创建方法
【问题讨论】:
在CVPixelBuffer中,有没有一种方法可以简单地使用copyMemory以外的指针从yuv数据指针的基地址指向y,u,v平面来创建纹理?
通过copyMemory创建纹理的方法大约需要0.5ms,但我想获得更好的速度。
我知道 OpenGL 和 DirextX 可以通过传递指针并让 GPU 生成纹理来获得更快的速度。
请告诉我任何更快的纹理创建方法
【问题讨论】:
欢迎!
您可以使用CVMetalTextureCache 从CVPixelBuffers 创建纹理。
您需要先使用CVMetalTextureCacheCreate 创建纹理缓存,然后在CVMetalTextureCacheCreateTextureFromImage 中使用它来创建纹理(示例请在文档页面上向下滚动)。
您可以(并且应该)使用适当的设置创建一次纹理缓存,并在每次需要创建纹理时重新使用它。
【讨论】:
CVMetalTextureCacheCreateTextureFromImage 不会复制数据。它将创建一个具有相同底层缓冲内存的纹理,所以它应该很快。