试图找出如何解决我的问题,应用着色到我的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
}
}将SCNView替换为ARSCNView会导致以下错误:
错误:金属渲染器不支持零顶点函数名
“错误:_executeProgram -没有管道状态”
我认为这是因为ARSCNView使用了与SCNView不同的渲染器。但是,日志ARSCNView.renderingAPI没有告诉我渲染器的任何信息,在构造ARSCNView实例时,我似乎无法选择一个。我肯定遗漏了一些显而易见的东西,因为在网上搜索参考资料时,我似乎找不到一个资源。
我最初的想法是使用SCNProgram来应用着色器。但是我找不到如何将它应用于ARSCNView的任何资源,或者如果它甚至是一个正确的/可能的解决方案,SCNProgram似乎是为材料保留的。
谁能给我任何有用的指点,如何解决vertex+fragment着色器的ARSCNView?
发布于 2018-06-21 11:18:35
SCNTechnique for ARSCNView不适用于GLSL着色器,而是需要在技术的plist文件中提供metalVertexShader和metalFragmentShader键下的金属函数。
相反,文档说任何混合着色器都应该有效:
您必须同时指定片段和顶点着色器,并且必须指定一个GLSL着色器程序、一对金属函数,或者两者都指定。如果两者都指定了,SceneKit将使用适合当前渲染器的任何着色器。
所以这可能是个错误,但我想这些文档已经过时了。由于所有ARKit运行设备也都运行金属,GLSL支持还没有添加到ARSCNViews中。由于iOS12反对OpenGL,这看起来像计划中的那样。
发布于 2018-09-05 00:34:17
我有这个问题在ARKit miss 11.4和12,它归结为一系列的错拼着色器。我希望这能帮上忙。
https://stackoverflow.com/questions/47188419
复制相似问题