有没有办法只使用像素数据指针而不使用CVPixelBuffer来制作MTLTexture?

问题描述

当前,我将像素数据复制到CVPixelBuffer的y,u,v平面,使用CVMetalTextureCache创建CVMetalTexture,并导入和使用MTLTexture。

有没有一种方法可以制作CVMetalTexture而不将像素数据复制到CVPixelBuffer的y,u,v平面? 还是有一种方法可以仅使用像素数据指针而不使用CVPixelBuffer来创建MTLTexture?

解决方法

创建MTLTexture的惯用方式是:

创建一个MTLTextureDescriptor来描述所需的纹理-其大小,像素格式,mip贴图的数量等。

使用纹理描述符通过makeTexture(descriptor:)MTLDevice请求新纹理。

在纹理上使用replace(region:mipmapLevel:slice:withBytes:bytesPerRow:bytesPerImage:),以用数据填充纹理。

CVMetalTexture主要用于将CoreVideo数据桥接到Metal中,例如如果您要解码视频并将其显示在3d场景中。如果您还没有进入CV的世界,那么它无用。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...