新しい Swift 言語を採用したいと思っています。これが Apple の開発を前進させる方法だと思われるからです。また、iOS 8 の新しい SceneKit サポートにも感銘を受けました。実行時にカスタム ジオメトリをプログラムで作成したいのですが、Swift コードを機能させるのに苦労しています。それでも、Objective C の同等のコードは問題なく動作します。
これはバグであるか、私が間違っている可能性があります。
私は単に単一の三角形を作成してレンダリングしようとしています。簡単にするために、この時点では法線やテクスチャなどは無視します。したがって、黒い三角形が表示されることだけを期待しています。
Swift コード (動作しない)
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];
任意のポインタをいただければ幸いです。