我需要从CVPixelBuffers创建纹理,所以我使用CVMetalTextureCache来生成它们。我想将这些纹理用作渲染目标,但我还没有找到指定MTLTextureUsage的方法。
TextureAttributes参数标记为"保留供将来使用"
如果没有办法,继续使用TextureCache并执行blit或从textureDescriptor创建纹理会更快吗?
答案 0 :(得分:0)
我使用CVMetalTextureCache生成源自CVPixelBufferPool的Metal纹理。我正在使用CVMetalTextureCacheCreateTextureFromImage来创建Metal纹理本身,如下所示:
var pixelBuffer:CVPixelBuffer // this I get from CVPixelBufferPoolCreatePixelBufferWithAuxAttributes
var mTexture:CVMetalTexture?
let textureAttributes = [kCVPixelBufferPoolAllocationThresholdKey as String : Int(maxBufferCount)] as CFDictionary
if CVMetalTextureCacheCreateTextureFromImage(kCFAllocatorDefault, metalTextureCache,pixelBuffer!,textureAttributes,MTLPixelFormat.bgra8Unorm,Int(globals_L.displaySize[0]),Int(globals_L.displaySize[1]), 0, &mTexture) != kCVReturnSuccess {
print("Problem creating a metal texture from pixel buffer")
}
else {
metalTexture = mTexture // now we use this metalTexture to render
}
这会对你有用吗?