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