Если я выделяю MDLAsset, используя металл, а затем инициализирую SCNNode, используя этот актив, копируются ли объекты SCNGeometrySource в буферы, отличные от Metal?
Если я выделю
MDLAsset
и
SCNNode
вот так
let device: MTLDevice = (sceneView?.device)!
let allocator = MTKMeshBufferAllocator(device: device)
let url = Bundle.main.url(forResource: name, withExtension: "obj")
let asset = MDLAsset(url: url! as URL, vertexDescriptor: nil, bufferAllocator: allocator)
guard let object = asset.object(at: 0) as? MDLMesh else {
print("Failed to get mesh from obj asset")
return nil
}
let node = SCNNode.init(mdlObject: object)
let geometrySources = node.geometry.sources
Мои
geometrySource
объекты, поддерживаемые буферами Metal, или процесс пошел и скопировал данные в NSData?
1 ответ
После экспериментов действительно так, что если вы явно не инициализируете
SCNGeometrySource
с металлическим буфером он будет поддерживаться неизменяемым
NSData
буфер. Это даже если
obj
файл был загружен в
MDLAsset
используя
MTLMeshBufferAllocator
в начальной настройке.