我不确定要在此处发布什么代码,但是我真的只是想知道如何调试此代码。我显示启用了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.scnview-renderer“上崩溃,没有可用于调试的回溯。我没有使用任何定制的金属着色器,并且甚至在出现这些滞后/裂纹时都不会渲染任何SceneKit几何。
我不能使用OpenGL渲染,因为我相信ARSCNView仅支持金属支持的渲染。根据{{3}},我也尝试过不设置照明环境,但这似乎并不能解决问题。
如果任何人在渲染ARSCNViews时遇到了这些错误,并且对如何调试这些延迟有任何建议,将不胜感激。
更新
通过对Vision标志性请求的极大限制,我能够消除这些滞后和GPU错误。看来,这仅仅是由于在iOS 12上执行了大量昂贵的图形操作所导致的。此替代方法似乎并没有帮助SceneKit渲染器崩溃
答案 0 :(得分:0)
从我的应用程序中删除此代码后,该问题消除了(sceneView是IB的ARSCNView):
let scene = try SCNScene(url: ConfigAR.loader!, options: nil)
preloaderSCNView.scene = scene
sceneView.addSubview( preloaderSCNView ) // the root of the problem