试图弄清楚如何解决将着色器应用到我的ARSCNView的问题。 以前,当使用标准SCNView时,我已成功地通过以下方式应用失真着色器:
if let path = Bundle.main.path(forResource: "art.scnassets/distortion", ofType: "plist") {
if let dict = NSDictionary(contentsOfFile: path) {
let technique = SCNTechnique(dictionary: dict as! [String : AnyObject])
scnView.technique = technique
}
}
用ARSCNView替换SCNView会出现以下错误:
"错误:金属渲染器不支持nil顶点函数名称"
"错误:_executeProgram - 没有管道状态"
我在想它是因为ARSCNView使用的是与SCNView不同的渲染器。但是记录ARSCNView.renderingAPI告诉我关于渲染器的任何信息,当我构建我的ARSCNView实例时,我似乎无法选择一个。我必须遗漏一些明显的东西,因为在网上搜索参考资料时我似乎无法找到单一资源。
我最初的想法是使用SCNProgram来应用着色器。但我无法找到如何将其应用于ARSCNView的任何资源,或者如果它甚至是正确/可能的解决方案,SCNProgram似乎是为材料保留的。
任何人都能为我提供有关如何为ARSCNView解决顶点+片段着色器的有用指针吗?
答案 0 :(得分:1)
$('#refine-event-txtbox').keyup
的 SCNTechnique
不适用于GLSL着色器,而是需要在该技术的plist文件中的键ARSCNView
和metalVertexShader
下提供Metal函数。>
相反,documentation说着色器的任何组合都应该起作用:
必须同时指定片段着色器和顶点着色器,并且必须 指定GLSL着色器程序,一对Metal函数或 都。如果同时指定了两者,则SceneKit使用哪个着色器 适用于当前渲染器。
所以这可能是一个错误,但是我想文档已经过时了。由于所有运行ARKit的设备也都运行Metal,因此GLSL支持尚未添加到ARSCNViews中。 随着iOS12弃用OpenGL,这看起来像计划中的那样。
答案 1 :(得分:-1)
我在ARKit iOS11.4和12中遇到了这个问题,这归结为一系列拼写错误的着色器。我希望这可以对某人有所帮助。