问题描述
使用Xcode中的RealityKit运行生成的Augmented Reality应用程序时,屏幕上没有任何显示,并且控制台上出现奇怪的日志:
2020-09-16 16:54:29.246883+0200 TestAR[494:29654] Metal GPU Frame Capture Enabled
2020-09-16 16:54:29.247203+0200 TestAR[494:29654] Metal API Validation Enabled
2020-09-16 16:54:29.792709+0200 TestAR[494:29654] Compiler failed to build request
2020-09-16 16:54:29.792957+0200 TestAR[494:29654] [Graphics] makeRenderPipelineState failed [output of type ushort is not compatible with a MTLPixelFormatR16Float color attachement.].
2020-09-16 16:54:29.792989+0200 TestAR[494:29654] [Graphics] makeRenderPipelineState failed.
我尝试在两个设备上运行该应用程序,结果是相同的。还尝试使用Xcode 12,结果相同。更令人不安的是,我让该应用程序在20多次尝试中像两次一样正常工作,而没有进行任何更改,只是杀死了该应用程序,然后重新启动或关闭xcode并重新启动。
这是代码,但这只是生成的基本代码:
struct ContentView : View {
var body: some View {
return ARViewContainer().edgesIgnoringSafeArea(.all)
}
}
struct ARViewContainer: UIViewRepresentable {
func makeUIView(context: Context) -> ARView {
let arView = ARView(frame: .zero)
let boxAnchor = try! Experience.loadBox()
arView.scene.anchors.append(boxAnchor)
return arView
}
func updateUIView(_ uiView: ARView,context: Context) {}
}
目前我还不太了解自己在做什么,这里是其他信息:
- macOS Catalina v10.15.5
- iPhone X 13.5.1
- iPhone X 13.7
- iPhone 6S Plus 13.5.1
- Xcode 11.7
- Xcode 12
解决方法
首先,您必须确保没有更改AppDelegate.swift
文件中的内容。窗口的根视图控制器必须来自contentView
:
let contentView = ContentView()
window.rootViewController = UIHostingController(rootView: contentView)
window.makeKeyAndVisible()
解决方案I
有时在Xcode中,您可能会发现一个错误–由于在中间编译数据文件夹中发现某些错误,因此无法启动或运行您的应用程序。您需要做的就是清空DerivedData
目录。
为此,请在Finder中按快捷键 Cmd - Shift - G 并指定以下路径以转到所需目录:>
~/Library/Developer/Xcode/DerivedData/
在删除DerivedData
目录的内容之后,已编译的应用程序必须能够按预期运行。
有关DerivedData的其他信息:
DerivedData
是默认情况下位于~/Library/Developer/Xcode/DerivedData
中的文件夹。 Xcode是存储各种中间构建结果,生成的索引等的位置。可以在Xcode偏好设置(“位置”标签)中配置DerivedData位置。
解决方案II
如果以上两个步骤均无效,则应重新安装Xcode。