在AR场景中打开相机灰度模式时,会使所有渲染的对象变为灰度效果。在ARKit的场景中,UI视图如滚动视图(ScrollView)对象仍然可以被渲染,但在滚动时会发生像素化的问题。
解决方法是在渲染时禁用ARKit的相机灰度模式。可以通过以下代码实现:
if let configuration = sceneView.session.configuration as? ARWorldTrackingConfiguration { let shader = SCNShader() shader.fragmentFunctionName = "applyGrayscaleEffect" configuration.frameSemantics.insert(.shader) sceneView.session.run(configuration) }
该代码中,创建了一个名为“applyGrayscaleEffect”的着色器(shader),并将其应用于场景中的每个对象。此外,还将.shader选项添加到配置的frameSemantics属性中,从而禁用了ARKit默认的相机灰度模式,避免了滚动视图像素化的问题。