如何在框架中提供带有金属着色器的SCNTechnique

问题描述 投票:0回答:1

我正在使用示例代码:https://github.com/laanlabs/SCNTechniqueGlow。此代码使用 SCNTechnique 使 3d 模型发光。

现在我想将发光功能移至框架而不是主包中(以便我可以在不同的应用程序中重用它)。因此,我将一些创建 SCNTechnique、

plist
文件和
metal
文件的助手移至框架中。然后发光停止工作(屏幕在第一帧冻结)。

我怀疑这是因为我需要对框架中的金属文件做一些特殊的事情。例如,在这个问题中:Metal 文件作为 iOS 框架的一部分。这似乎表明我需要在框架中设置金属文件。然而,就我而言,金属代码是由

SCNTechnique
(从 plist 文件创建)调用的,并且我不直接处理金属文件。

编辑:

在此处添加了一个可重现的项目:https://drive.google.com/file/d/1h_7_gKQGmUX1YOW_tee3SJ7liY80BNtC/view?usp=drive_link

由于 Metal 文件位于框架中,该项目现在无法运行,但如果将 Metal 文件移至主二进制文件中,它将再次开始运行。

ios swift scenekit metal
1个回答
0
投票

找到解决方案:我可以设置该技术的

library
属性:

    let device = MTLCreateSystemDefaultDevice()
    let lib = try! device!.makeDefaultLibrary(bundle: bundle)
    technique.library = lib
© www.soinside.com 2019 - 2024. All rights reserved.