首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ARKit,ARSCNView用金属着色器

ARKit,ARSCNView用金属着色器
EN

Stack Overflow用户
提问于 2017-11-08 19:47:08
回答 2查看 908关注 0票数 3

试图找出如何解决我的问题,应用着色到我的ARSCNView。以前,在使用标准SCNView时,我成功地应用了变形着色器,方法如下:

代码语言:javascript
复制
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?

EN

回答 2

Stack Overflow用户

发布于 2018-06-21 11:18:35

SCNTechnique for ARSCNView不适用于GLSL着色器,而是需要在技术的plist文件中提供metalVertexShadermetalFragmentShader键下的金属函数。

相反,文档说任何混合着色器都应该有效:

您必须同时指定片段和顶点着色器,并且必须指定一个GLSL着色器程序、一对金属函数,或者两者都指定。如果两者都指定了,SceneKit将使用适合当前渲染器的任何着色器。

所以这可能是个错误,但我想这些文档已经过时了。由于所有ARKit运行设备也都运行金属,GLSL支持还没有添加到ARSCNViews中。由于iOS12反对OpenGL,这看起来像计划中的那样。

票数 1
EN

Stack Overflow用户

发布于 2018-09-05 00:34:17

我有这个问题在ARKit miss 11.4和12,它归结为一系列的错拼着色器。我希望这能帮上忙。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47188419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档