访问金属中的特定像素集 MTLTexture

access particular set of pixels MTLTexture in metal

我使用 UIImage 数据创建了一个 MTLTexture,如下所示。

var texture = metalView.currentDrawable!.texture
let uiImg = createImageFromCurrentDrawable()
            
guard let device = metalView.device else {
    fatalError("Device not created. Run on a physical device")
}
let textureLoader = MTKTextureLoader(device: device)
let imageData: NSData = UIImagePNGRepresentation(uiImg)! as NSData
texture = try! textureLoader.newTexture(data: imageData as Data, options: [MTKTextureLoader.Option.allocateMipmaps: (false as NSNumber)])
            

我需要做的是更改 MTLTexture 中的像素颜色。不是所有的人。那么,是否可以访问 MTLtexture 中的一组特定像素并写入 Metal?

是的,如 MTLTexture documentation 所示。您可以使用 getBytes() 方法之一将纹理数据区域复制到缓冲区,并使用 replace() 方法之一将纹理像素区域替换为您提供的缓冲区中的数据。