我不确定在这里发布什么代码是相关的,但我真的只是想知道如何进行调试。我在启用ARFaceTrackingConfiguration的情况下显示ARSCNView,并在后台线程上对面几何体执行频繁的视觉VNDetectFaceLandmarksRequest
和ARSCNView.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.snview renderer(上偶尔也会出现崩溃,没有可以用来调试的回溯。我没有使用任何自定义金属着色器,甚至在这些滞后/崩溃发生时也没有渲染任何SceneKit几何图形。
我不能使用OpenGL渲染,因为我认为ARSCNView只支持金属背景渲染。根据这个问题,我也试过不设置照明环境,但这似乎并不能解决问题。
如果有人在渲染ARSCNViews时遇到这些错误,并对如何调试这些滞后有任何建议,我们将不胜感激。
更新
我能够消除这些滞后和GPU错误与我的视觉里程碑请求的极端节流。这些似乎只是由于在iOS 12上进行了大量昂贵的图形操作造成的。此解决方法似乎没有帮助SceneKit渲染器崩溃
从我的应用程序中删除此代码时消除了问题(sceneView是IB中的ARSCNView(:
let scene = try SCNScene(url: ConfigAR.loader!, options: nil)
preloaderSCNView.scene = scene
sceneView.addSubview( preloaderSCNView ) // the root of the problem