我不确定哪些代码与此处发布相关,但我真的只是想知道如何去调试它。我显示启用了 ARFaceTrackingConfiguration 的 ARSCNView,并在后台线程上执行频繁的 VisionVNDetectFaceLandmarksRequest
并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 只支持金属支持渲染。根据这个问题,我也尝试过不设置照明环境,但这似乎并没有解决问题。
如果有人在渲染 ARSCNViews 时遇到这些错误,并且对如何调试这些滞后有任何建议,将不胜感激。
更新
我能够通过极端限制我的 Vision 地标请求来消除这些滞后和 GPU 错误。似乎这些只是由于在 iOS 12 上执行大量昂贵的图形操作造成的。这种解决方法似乎没有帮助 SceneKit 渲染器崩溃