swift - 使用 CVPixelBuffer 是创建 CAMetalTexture(MTLTexture) 的唯一方法吗?
问题描述
在 CVPixelBuffer 中,有没有一种方法可以通过简单地使用 copyMemory 以外的指针从 yuv 数据指针的基地址指向 y、u、v 平面来创建纹理?
通过copyMemory创建纹理的方法大约需要0.5ms,但我想获得更好的速度。
我知道 OpenGL 和 DirextX 有办法通过传递指针并让 GPU 生成纹理来获得更快的速度。
请告诉我任何更快的纹理创建方法
解决方案
欢迎!
您可以使用 aCVMetalTextureCache
从CVPixelBuffers
.
您需要首先使用创建纹理缓存CVMetalTextureCacheCreate
并将其CVMetalTextureCacheCreateTextureFromImage
用于创建纹理(在文档页面上向下滚动以获取示例)。您可以(并且应该)使用适当的设置创建一次纹理缓存,并在每次需要创建纹理时重新使用它。
推荐阅读
- django-rest-framework - 如何将 Django REST Framework 路由器中的 url 参数限制为整数?
- windows - 一段时间后,pg_notify 不会向在 docker 容器中运行的应用程序发送通知
- node.js - 使用等待后哈希密码不起作用
- ontology - 如何将数据(实例)导入到 protoge 中的现有本体中
- java - 如何在 Spring Boot 应用程序启动期间将 SynchronizationCallbacks 添加到 @TransactionalEventListener?
- reactjs - 使用 useEffect 时,我在传递小于变量依赖项时收到警告
- math - 在 Maple 中,如何将数组(列表或向量或矩阵)的数量与行数和列数相等的数组的数量相除?
- javascript - firebase firestore 离线持久化 FirebaseError
- maven - 无法在 Maven 部署 github 操作上重命名战争或 jar 文件
- python - 如何让 KNN 与 Pipeline 和 GridSearchCV 一起工作?