metal获取CVPixelBuffer的方式

1,678 阅读1分钟

第一种:

CVMetalTextureCacheCreate(

kCFAllocatorDefault,

nil,

device!,

nil,

&textureCache)

let pixelBufferAttri = [kCVPixelBufferIOSurfacePropertiesKey: [:]]

let s = CVPixelBufferCreate(

kCFAllocatorDefault,

720,

1280,

kCVPixelFormatType_32BGRA,

pixelBufferAttri,

&pixelBuffer)

let result = CVMetalTextureCacheCreateTextureFromImage(

kCFAllocatorDefault,

textureCache!,

offlinePixelBuffer!,

nil,

self.colorPixelFormat,

1080,

1920,

0,

&texture)

第二种:

var outPixelbuffer: CVPixelBuffer?

if let datas = targetTexture.texture.buffer?.contents() {

CVPixelBufferCreateWithBytes(kCFAllocatorDefault, targetTexture.width,

targetTexture.height, kCVPixelFormatType_64RGBAHalf, datas,

targetTexture.texture.bufferBytesPerRow, nil, nil, nil, &outPixelbuffer);

}