Я очень хочу принять новый язык 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 (который работает)
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];
Любые указатели будут оценены.