gpt4 book ai didi

ios - ARKit,用于 ARSCNView 的金属着色器

转载 作者:搜寻专家 更新时间:2023-10-31 23:08:31 24 4
gpt4 key购买 nike

试图找出如何解决将着色器应用于我的 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 会出现以下错误:

“错误:Metal 渲染器不支持 nil 顶点函数名称”

“错误:_executeProgram - 无管道状态”

我认为这是因为 ARSCNView 使用与 SCNView 不同的渲染器。但是记录 ARSCNView.renderingAPI 并没有告诉我关于渲染器的任何信息,而且在构建我的 ARSCNView 实例时我似乎无法选择一个。我一定是遗漏了一些明显的东西,因为在网上搜索引用资料时我似乎找不到单一的资源。

我最初的想法是使用 SCNProgram 来应用着色器。但是我找不到任何关于如何将它应用到 ARSCNView 的资源,或者如果它是一个正确/可能的解决方案,SCNProgram 似乎是为 Material 保留的。

任何人都能够给我任何有用的指示,说明如何解决 ARSCNView 的顶点+片段着色器?

最佳答案

ARSCNView

SCNTechnique 不适用于 GLSL 着色器,而是需要在 metalVertexShader 键下的技术 plist 文件中提供 Metal 函数和 metalFragmentShader

相反,documentation说着色器的任何组合都应该工作:

You must specify both fragment and vertex shaders, and you must specify either a GLSL shader program, a pair of Metal functions, or both. If both are specified, SceneKit uses whichever shader is appropriate for the current renderer.

所以这可能是一个错误,但我猜文档已经过时了。由于所有运行 ARKit 的设备也运行 Metal,因此 GLSL 支持尚未添加到 ARSCNViews。由于 iOS12 弃用了 OpenGL,这看起来像是计划好的。

关于ios - ARKit,用于 ARSCNView 的金属着色器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47188419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com