SceneKit中的金属生成网格

时间:2017-09-07 22:50:00

标签: scenekit metal

我使用Metal计算内核生成网格数据(目前是三角形汤)。

是否可以有效地(没有任何复制)将网格数据带入SceneKit以利用SceneKit的渲染器?网格数据会频繁更新,因此避免复制数据非常重要。三角形的数量也可以改变每一帧。

1 个答案:

答案 0 :(得分:5)

您可以将MTLBuffer传递给SCNGeometrySource(无副本):

awk '/EKYC/ { cnt++;cnt1=0 } $0 != "EKYC" { cnt1++;if ($2 ~ "not") { $2 = "null" } dat[cnt,cnt1]=$2 } END { for (i=1;i<=cnt;i++) { for (p=1;p<=cnt1;p++) { printf "%s\t",dat[i,p] } print "" } }' filename

你可以在SCNGeometryElement上动态调整元素的数量(实际上你只能裁剪,所以你必须预先分配一个足够大的缓冲区):

+ (instancetype)geometrySourceWithBuffer:(id <MTLBuffer>)mtlBuffer vertexFormat:(MTLVertexFormat)vertexFormat semantic:(SCNGeometrySourceSemantic)semantic vertexCount:(NSInteger)vertexCount dataOffset:(NSInteger)offset dataStride:(NSInteger)stride API_AVAILABLE(macos(10.11), ios(9.0));