Пользовательская геометрия SceneKit в Swift на iOS не работает, но эквивалентный код Objective C делает
Я стремлюсь принять новый язык Swift, так как кажется, что это путь к развитию Apple. Я также был впечатлен новой поддержкой SceneKit в iOS 8. Я хотел бы программно создавать пользовательскую геометрию во время выполнения, но я изо всех сил пытаюсь заставить работать код Swift. И все же эквивалентный код в Objective C работает нормально.
Это может быть ошибка или что-то не так.
Я просто пытаюсь создать и визуализировать один треугольник. Я буду игнорировать нормали, текстуры и т. Д. Для простоты. Так что я ожидаю увидеть только черный треугольник.
Swift Code (не работает)
var verts = [SCNVector3(x: 0,y: 0,z: 0),SCNVector3(x: 1,y: 0,z: 0),SCNVector3(x: 0,y: 1,z: 0)]
let src = SCNGeometrySource(vertices: &verts, count: 3)
let indexes:Int[]=[0,1,2]
let dat = NSData(bytes: indexes, length: sizeofValue(indexes))
let ele = SCNGeometryElement(data:dat, primitiveType: .Triangles, primitiveCount: 1, bytesPerIndex: sizeof(Int))
let geo = SCNGeometry(sources: [src], elements: [ele])
let nd = SCNNode(geometry: geo)
scene.rootNode.addChildNode(nd)
Objective C Code (который работает)
SCNVector3 verts[] = { SCNVector3Make(0, 0, 0), SCNVector3Make(1, 0, 0), SCNVector3Make(0, 1, 0) };
SCNGeometrySource *src = [SCNGeometrySource geometrySourceWithVertices:verts count:3];
int indexes[] = { 0, 1, 2 };
NSData *datIndexes = [NSData dataWithBytes:indexes length:sizeof(indexes)];
SCNGeometryElement *ele = [SCNGeometryElement geometryElementWithData:datIndexes primitiveType:SCNGeometryPrimitiveTypeTriangles primitiveCount:1 bytesPerIndex:sizeof(int)];
SCNGeometry *geo = [SCNGeometry geometryWithSources:@[src] elements:@[ele]];
SCNNode *nd = [SCNNode nodeWithGeometry:geo];
d
[scene.rootNode addChildNode:nd];
Любые указатели будут оценены.