2

我不确定哪些代码与此处发布相关,但我真的只是想知道如何去调试它。我显示启用了 ARFaceTrackingConfiguration 的 ARSCNView,并在后台线程上执行频繁的 VisionVNDetectFaceLandmarksRequestARSCNView.hitTest针对面部几何图形。在 iOS 12 之前我没有延迟问题,即使现在它只是间歇性的,但是当它发生时,它会一次冻结整个屏幕几秒钟并显示错误:

Execution of the command buffer was aborted due to an error during execution. Discarded (victim of GPU error/recovery) (IOAF code 5)

不确定它是否相关,但我也偶尔会在 SceneKit 渲染线程(com.apple.scenekit.scnview-renderer)上崩溃,没有可用于调试的回溯。我没有使用任何自定义金属着色器,并且在这些滞后/崩溃发生时甚至没有渲染任何 SceneKit 几何图形。

我不能使用 OpenGL 渲染,因为我相信 ARSCNView 只支持金属支持渲染。根据这个问题,我也尝试过不设置照明环境,但这似乎并没有解决问题。

如果有人在渲染 ARSCNViews 时遇到这些错误,并且对如何调试这些滞后有任何建议,将不胜感激。

更新

我能够通过极端限制我的 Vision 地标请求来消除这些滞后和 GPU 错误。似乎这些只是由于在 iOS 12 上执行大量昂贵的图形操作造成的。这种解决方法似乎没有帮助 SceneKit 渲染器崩溃

4

1 回答 1

1

从我的应用程序中删除此代码时消除了问题(sceneView 是来自 IB 的 ARSCNView):

let scene = try SCNScene(url: ConfigAR.loader!, options: nil)
preloaderSCNView.scene = scene
sceneView.addSubview( preloaderSCNView ) // the root of the problem
于 2019-01-14T03:43:43.770 回答