用swift+Metal shader文件编译framework动态库

前端之家收集整理的这篇文章主要介绍了用swift+Metal shader文件编译framework动态库前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

若想用swift语言生成库则只能生成动态库,若是纯swift代码脚本,问题不大,按一般流程就行。
若是编译的库中有shader文件则需要先编译出Metal库。具体方法可采用如下的方式。

  1. 把shader文件和swift文件放在一起进行framework库的编译。编译成功后会自动生成一个default.Metallib文件,该文件为shader生成的库文件
  2. 生成的framework导入需要调用的地方,注意使用库时需要单独把default.Metallib取出来放到工程中的Resource下面。
  3. 使用let library = device.newDefaultLibrary()直接加载Metal库。

上面的方式是最简单的,另外,对shader文件,也可以不在xcode中编译库,而是采取手动的编译方式。参考苹果官方文档:https://developer.apple.com/library/content/documentation/Miscellaneous/Conceptual/MetalProgrammingGuide/Dev-Technique/Dev-Technique.html
手动编译Metal库后,加载库不能采用上面步骤3中的方式,需要采用如下的方式:

guard let Metallibpath = Bundle(for: type(of: self)).path(forResource: "YourShader",ofType: "Metallib") else {
                fatalError("Metal library not found")
            }
let library = try device.makeLibrary(filepath: Metallibpath)
if library == nil{
                print("Metal library is null")
            }
原文链接:https://www.f2er.com/swift/321377.html

猜你在找的Swift相关文章