我想加入一个第三方的wasm库到工程里面引用,请问应该按照什么步骤加进去,需要哪些配置,打包需不需要修改?
不知道有没有文档说明。
我尝试了几次,还没有找到好的办法。我把wasm和对应的js放到了工程里面。
- 3.7 版本,打包的时候不会把这个wasm打进去,preview的时候也加载不到,只有我手工拷贝wasm到preview-template根目录里面,才能加载到(加载到了就正常用),但我不知道其他平台怎么弄的,打包的时候手动插入文件? 会不会不兼容。
- 3.8 版本,直接打包都不让打包了,报 [Assets] TypeError: Failed to fetch。那我就奇怪你们引擎里面的spine那些wasm是怎么一个流程打进去的。是怎么加载的。编辑器打包的代码也没开源,开源了还能改改。
请问大佬们,有没有文档啊。不支持的话也回我一下,或者帮忙指出怎么改引擎。打包那套是编辑器的又不开源改不了。
或者能帮我看看吗?我传一下wasm。basisu.zip (231.2 KB)
这个库以前我在cocos-x里面嵌入进去,用了很久效果很好,你们那astc的文件体积太大了,这个比较合适要不要考虑内置进去?
解决了。办法是不要编成wasm。那些wasm和js.mem的文件都不能用。
emscripten 用的compile_flags是 -sWASM=0 ,link_flags 是–memory-init-file 0,直接编出一个js文件引用。
效率就不知道高不高了。反正只能这样了。
微信小游戏还是web还是原生?我之前一顿调试搞定了 wasm 格式同时在web和微信小游戏加载和使用。微信小游戏就用 WXWebAssembly.instantiate 就行,传路径且不能加密;web上需要改一下引擎运行时,注册一下要加载为BufferAsset的格式(不然以Asset读取会有编码问题),hook一下加载回调。
我这个是已经在web端可以加载了的,没有改运行时,但是需要手工拷贝到特定路径下。
打包系统不直接支持,比较麻烦。想找一个比较简便的方式,可以在所有平台下都兼容的。
我做法是:不是直接调用WebAssembly.instantiate,而是去import用emscripten生成出来的包装js进行加载,那里面的路径就是写死的,所以要手工拷到网页根部路径下,就可以用包装js加载了。
后面我再试试看吧。目前先用js版本的看看效率。
再加一个,-s NO_DYNAMIC_EXECUTION=1 微信小游戏不允许动态生成代码。