访问金属中的特定像素集 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()
方法之一将纹理像素区域替换为您提供的缓冲区中的数据。
我使用 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()
方法之一将纹理像素区域替换为您提供的缓冲区中的数据。