如何为使用 CVMetalTextureCache 创建的纹理指定 TextureUsage

How to specify TextureUsage for Textures created with CVMetalTextureCache

我需要从 CVPixelBuffers 创建纹理,所以我使用 CVMetalTextureCache 来生成它们。我想使用这些纹理作为渲染目标,但我还没有找到指定 MTLTextureUsage 的方法。

TextureAttributes 参数标记为 "reserved for future use"

如果没有办法,是继续使用 TextureCache 并执行 blit 还是从 textureDescriptor 创建纹理会更快?

我正在使用 CVMetalTextureCache 生成源自 CVPixelBufferPool 的金属纹理。我正在使用 CVMetalTextureCacheCreateTextureFromImage 来创建金属纹理本身,如下所示:

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 
}

这对你有用吗?