在melal中访问特定的像素集MTLTexture

时间:2018-06-29 10:20:45

标签: swift metal metalkit mtlbuffer

我使用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中的特定像素集并将其写入金属中?

1 个答案:

答案 0 :(得分:0)

是的,以MTLTexture documentation为例,您会看到。您可以使用var table = document.getElementById("table"); for (var i = 0; i < tabArray.length; i++) { // create a new row var newRow = table.insertRow(table.length); for (var j = 0; j < tabArray[i].length; j++) { // create a new cell var cell = newRow.insertCell(j); // add value to the cell cell.innerHTML = tabArray[i][j]; } } document.innerHTML = currentValue; 方法之一将纹理数据区域复制到缓冲区中,而可以使用getBytes()方法之一将纹理像素的区域替换为您提供的缓冲区中的数据。