断言`vertexFunction 不能为 nil - 在 iPad iOS 9.0.2 中加载 SceneKit 场景时出错
failed assertion `vertexFunction must not be nil - Error when loading a SceneKit scene in iPad iOS 9.0.2
我在 iPad 上测试我的应用程序时遇到令人沮丧的错误,此时我的 SCNScene 已加载,我一看到屏幕上的节点。我不知道它可能是什么:
/BuildRoot/Library/Caches/com.apple.xbs/Sources/Metal/Metal-54.31/Framework/MTLRenderPipeline.mm:973: failed assertion `vertexFunction must not be nil.
我没有直接使用 Metal,也没有直接使用 OpenGL,只有 SceneKit 的东西。我不太了解它们,但我听说它们以某种方式在下面使用。
我已尝试通过 "forcing" OpenGL 修复它,正如我在某些主题中读到的它可能有所帮助:
scnView = GGBattleScene2(frame: view.frame, options: [SCNPreferredRenderingAPIKey : SCNRenderingAPI.OpenGLES2.rawValue])
场景出现了,但是添加的很多元素只是不可见,或者没有渲染,我不知道。实际上除了我画的支撑轴外所有这些都是:
好吧,我发现这个错误只是因为我的 SCNNodes 的 materials 设置了 SKScene,其中有一个 SKSpriteNode。这本身不是问题,因为我在 xCode 的早期版本中已经 运行 这个并且它工作得很好。由于某种原因,实际版本的编译器在那里出错了。我知道这一点是因为我在 xcode 6.3.9 中使用了相同的代码并且它有效。
当我更改为使用与 SKSpriteNode 相同的纹理而不是 SKScene 本身设置 material 时,它起作用了
我遇到了类似的错误并获得了完全相同的控制台输出:
/BuildRoot/Library/Caches/com.apple.xbs/Sources/Metal/Metal-55.1.1/Framework/MTLRenderPipeline.mm:973: failed assertion `vertexFunction must not be nil.'
我检查了我的项目方案配置,发现 "Metal API Validation = Enabled" 是根本原因。禁用它("Metal API Validation = Disabled"),然后错误消失。
我在 iPad 上测试我的应用程序时遇到令人沮丧的错误,此时我的 SCNScene 已加载,我一看到屏幕上的节点。我不知道它可能是什么:
/BuildRoot/Library/Caches/com.apple.xbs/Sources/Metal/Metal-54.31/Framework/MTLRenderPipeline.mm:973: failed assertion `vertexFunction must not be nil.
我没有直接使用 Metal,也没有直接使用 OpenGL,只有 SceneKit 的东西。我不太了解它们,但我听说它们以某种方式在下面使用。 我已尝试通过 "forcing" OpenGL 修复它,正如我在某些主题中读到的它可能有所帮助:
scnView = GGBattleScene2(frame: view.frame, options: [SCNPreferredRenderingAPIKey : SCNRenderingAPI.OpenGLES2.rawValue])
场景出现了,但是添加的很多元素只是不可见,或者没有渲染,我不知道。实际上除了我画的支撑轴外所有这些都是:
好吧,我发现这个错误只是因为我的 SCNNodes 的 materials 设置了 SKScene,其中有一个 SKSpriteNode。这本身不是问题,因为我在 xCode 的早期版本中已经 运行 这个并且它工作得很好。由于某种原因,实际版本的编译器在那里出错了。我知道这一点是因为我在 xcode 6.3.9 中使用了相同的代码并且它有效。
当我更改为使用与 SKSpriteNode 相同的纹理而不是 SKScene 本身设置 material 时,它起作用了
我遇到了类似的错误并获得了完全相同的控制台输出:
/BuildRoot/Library/Caches/com.apple.xbs/Sources/Metal/Metal-55.1.1/Framework/MTLRenderPipeline.mm:973: failed assertion `vertexFunction must not be nil.'
我检查了我的项目方案配置,发现 "Metal API Validation = Enabled" 是根本原因。禁用它("Metal API Validation = Disabled"),然后错误消失。