我有一个Metal支持的SceneKit项目,我想在每帧画一条在CPU上修改过的曲线 . 这似乎应该是一项简单的任务;我多次在OpenGL中完成的一个 .

就像是:

array_of_points[0].x = 25
array_of_points[0].y = 35
upload_array_to_gpu()
render_frame()

似乎无法修改SCNNode的SCNGeometrySource . 重新创建和设置node.geometry可以工作,但是与场景中的其他节点相比,位置滞后/抖动 . 每帧重新创建整个节点也会滞后 .

一个可能的途径可能是几何着色器修饰符,但我仍然必须以某种方式传递我的cpu计算的曲线位置 .

另一种选择是直接使用金属API . 虽然这种方法似乎需要更多代码,但我找不到太多关于将SceneKit与Metal混合的信息 .

我也尝试将preferredRenderingAPI设置为OpenGL,但它不会更改renderingAPI .