首页 > 解决方案 > 使用 CVPixelBuffer 是创建 CAMetalTexture(MTLTexture) 的唯一方法吗?

问题描述

在 CVPixelBuffer 中,有没有一种方法可以通过简单地使用 copyMemory 以外的指针从 yuv 数据指针的基地址指向 y、u、v 平面来创建纹理?

通过copyMemory创建纹理的方法大约需要0.5ms,但我想获得更好的速度。

我知道 OpenGL 和 DirextX 有办法通过传递指针并让 GPU 生成纹理来获得更快的速度。

请告诉我任何更快的纹理创建方法

标签: swiftgraphicsmetal

解决方案


欢迎!

您可以使用 aCVMetalTextureCacheCVPixelBuffers.

您需要首先使用创建纹理缓存CVMetalTextureCacheCreate并将其CVMetalTextureCacheCreateTextureFromImage用于创建纹理(在文档页面上向下滚动以获取示例)。您可以(并且应该)使用适当的设置创建一次纹理缓存,并在每次需要创建纹理时重新使用它。


推荐阅读