当我在iPad上测试我的应用程序时,当我看到屏幕上的节点时,当我的SCNScene被加载时,我遇到了一个令人沮丧的错误。我不知道这会是什么
/BuildRoot/Library/Caches/com.apple.xbs/Sources/Metal/Metal-54.31/Framework/MTLRenderPipeline.mm:973: failed assertion `vertexFunction must not be nil.我不直接使用金属,也不使用OpenGL,只使用SceneKit。我不太明白他们的意思,但我听说他们不知何故被人利用了。我试图通过“强制”OpenGL来修复它,正如我在某个主题中所读到的,它可能会有所帮助:
scnView = GGBattleScene2(frame: view.frame, options: [SCNPreferredRenderingAPIKey : SCNRenderingAPI.OpenGLES2.rawValue])场景出现了,但很多元素只是变得看不见了,或者没有渲染,我不知道。实际上,除了我绘制的支撑轴之外,所有这些都是:

发布于 2015-10-24 02:29:20
嗯,我发现这个错误只是因为我的SCNNodes有一个SKScene设置了他们的材料,里面有一个SKSpriteNode。这本身并不是一个问题,因为我在早期版本的xCode中运行了这个程序,并且运行得很好。由于某种原因,实际版本的编译器在那里出错了。我之所以知道这一点,是因为我在xcode 6.3.9中使用了相同的代码,而且它起了作用。
当我更改为SKSpriteNode而不是SKScene本身设置相同纹理的材质时,它起了作用。
发布于 2015-11-30 10:41:39
我遇到了类似的错误,得到了完全相同的控制台输出:
/BuildRoot/Library/Caches/com.apple.xbs/Sources/Metal/Metal-55.1.1/Framework/MTLRenderPipeline.mm:973: failed assertion `vertexFunction must not be nil.'我检查了我的项目Scheme配置,并发现"Metal验证=已启用“是根本原因。禁用它("Metal验证=禁用“),然后bug消失。

https://stackoverflow.com/questions/33275327
复制相似问题