【发布时间】:2021-10-13 19:42:05
【问题描述】:
我需要从UnsafeRawPointer 创建一个MTLTexture,我尝试这样做:
private func createTexture(frame: UnsafeMutableRawPointer) -> MTLTexture? {
let textureOjb: UnsafeMutableRawPointer = frame_get_texture_obj(frame)
let ti: TextureInfo = texture_get_info(textureOjb)
let textureDescriptor = MTLTextureDescriptor.texture2DDescriptor(
pixelFormat: MTLPixelFormat.rgba8Unorm,
width: Int(ti.width),
height: Int(ti.height),
mipmapped: false)
textureDescriptor.usage = [.shaderWrite, .shaderRead]
guard let texture: MTLTexture = device?.makeTexture(descriptor: textureDescriptor) else
{
logger?.log(severity: .error, msg: "create texture FAILED.")
return nil
}
let data: UnsafeRawPointer = UnsafeRawPointer(ti.pixels)
texture.replace(region: <#T##MTLRegion#>, mipmapLevel: 0, withBytes: data, bytesPerRow: Int(ti.stride))
return texture
}
根据文档,这是正确的方法,所以,首先,我创建了MTLTextureDescriptor,然后我创建了一个MTLTexture,最后我需要传递我的像素数据才能做到这一点我使用@ 987654326@方法。
我不明白region这里的第一个参数是什么的问题?我应该通过那里?
【问题讨论】: