关闭

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

标签: swiftmetalshaderframework库
430人阅读 评论(0) 收藏 举报
分类:

若想用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")
            }
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Swift 创建framework并应用到项目中

iOS 8已经开放了动态库的权限。创建动态库并能运用到兼容iOS7的项目中!  Carthage & CocoaPods 0.36 对Swift也仅以 Framework 的方式来支持。 更...
  • chengkaizone
  • chengkaizone
  • 2016-01-07 09:50
  • 3597

iOS创建.a和.framework静态库,以及Bundle资源文件的使用

引言在开发中.framework静态库还是比较常见的,比如:SDK,公司间的代码合作等。我们可以把一些不愿意让别人见到的代码,用静态库的方式把它隐藏起来,只留下.h文件显示方法供编程人员使用。而.a文...
  • pangshishan1
  • pangshishan1
  • 2017-05-15 17:27
  • 1837

用workspace管理工程,并解决多静态库依赖

from:http://www.cnblogs.com/perryxiong/p/3759818.html 最近我在项目中遇到一些工程之间的管理问题。   模型: 其中 库A ...
  • yongyinmg
  • yongyinmg
  • 2014-11-26 21:15
  • 9521

vs2015编译的openssl-1.0.2l包含静态库(lib)和动态库(dll)头文件等

  • 2017-07-19 09:22
  • 19.88MB
  • 下载

创建iOS动态库/Framework

转自[http://www.cocoachina.com/ios/20141126/10322.html] 创建iOS动态库 新建工程并选择默认Target为Cocoa Touch Fra...
  • chengshuaicheng
  • chengshuaicheng
  • 2015-06-02 14:39
  • 303

iOS 动态库与静态库的区别(framework,.a,.dylib)

使用静态库的好处 1,模块化,分工合作  2,避免少量改动经常导致大量的重复编译连接  3,也可以重用,注意不是共享使用 使用动态库的好处 1使用动态库,可以将最终可执行文件体积...
  • FFY0611
  • FFY0611
  • 2015-03-13 12:46
  • 709

静态库与动态库的区别以及framework的使用

首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用。 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人看到源码,就需要以库...
  • plpldog
  • plpldog
  • 2017-09-21 10:36
  • 181

制作动态库 dynamic framework

framework是Cocoa/Cocoa Touch程序中使用的一种资源打包方式,可以将将代码文件、头文件、资源文件、说明文档等集中在一起,方便开发者使用,作为一名Cocoa/Cocoa Touch...
  • Marychenyuan
  • Marychenyuan
  • 2015-07-24 13:50
  • 832

iOS 静态库,动态库与 Framework

静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用。 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我...
  • meegomeego
  • meegomeego
  • 2015-09-30 10:33
  • 5901

IOS-静态库,动态库与 Framework

静态库与动态库的区别首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用。 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人...
  • Maxdong24
  • Maxdong24
  • 2017-02-17 09:50
  • 257
    个人资料
    • 访问:182628次
    • 积分:2760
    • 等级:
    • 排名:第15013名
    • 原创:86篇
    • 转载:6篇
    • 译文:0篇
    • 评论:73条
    文章分类
    最新评论