Я получаю следующее сообщение об ошибке при попытке рендеринга некоторых полигонов с большого количества позиций SCNVector3.Мне действительно нужно визуализировать полигоны, и я не знаю, почему это происходит.Если кто-нибудь знает другой способ рендеринга полигонов, я буду рад его протестировать!
[MTLDebugDevice validateNewBufferArgs:options:]
:467: failed assertion Cannot create buffer of zero length.
Следующий код используется для создания пользовательской SCNGeometry.
extension SCNGeometry {
static func multiPolygon (vertices: [SCNVector3]) -> SCNGeometry {
var indices: [Int32] = [Int32(vertices.count)]
indices.append(contentsOf: generateIndices(max: vertices.count))
let vertexSource = SCNGeometrySource(vertices: vertices )
let indexData = Data(bytes: indices,
count: indices.count * MemoryLayout<Int32>.size)
let element = SCNGeometryElement(data: indexData,
primitiveType: .polygon,
primitiveCount: 1,
bytesPerIndex: MemoryLayout<Int32>.size)
return SCNGeometry(sources: [vertexSource], elements: [element])
}
static private func generateIndices(max maxIndexValue: Int) -> [Int32]{
var counter: Int = 0
var output: [Int32] = []
while counter < maxIndexValue {
output.append(Int32(counter))
counter += 1
}
return output
}
}