У меня есть двоичный файл, содержащий множество троек значений Float
; на самом деле это длинный массив SCNVector3
, представляющий вершины для SCNGeometrySource
. Я прочитал файл (извините за упущение do-try-catch и т. д.) в память:
let sceneVectors = Data(contentsOf: sceneURL)
и хотите передать это в данных памяти как [SCNVector3]
вместе с SceneKit:
let sceneGeometry = SCNGeometrySource(vertices: sceneVectors)
Сегодня я боролся с использованием механизма UnsafePointer
для повторного ввода содержимого буфера Data
в виде массива SCNVector3
для выполнения контракта SCNGeometrySource
; что-то вроде этого.
dataBuffer.withUnsafeBytes {
(vertexBuffer: UnsafePointer<SCNVector3>) -> SCNGeometry in
« magic happens here »
return sceneGeometry
}
Мое прочтение об этом говорит мне, что в замыкании к буферу можно получить доступ как к массиву SCNVector3
, но при передаче в SCNGeometrySource
Swift сообщает:
cannot convert value of type 'UnsafePointer<SCNVector3>' to expected argument type '[SCNVector3]'
Как обычно, я подозреваю, что есть простое решение, которое я еще не придумал, поэтому я был бы признателен за любое предложение по решению этой проблемы.