RnM*_*Mss 5 javascript emscripten webassembly
通过使用以下选项进行编译,
emcc -s WASM=1 main.cpp -o index.js
emscripten 生成一个index.wasm, 和一个 js 包装器index.js。js 包装器在浏览器中运行时加载.wasm位于同一目录中的文件。XMLHttpRequest
那么如果我需要手动加载文件该怎么办呢.wasm?加载部分似乎是硬编码在包装器中的。
以下是我需要这样做的一些情况:
.wasm从另一个 url(例如从 CDN)提供该文件。.wasm是动态生成的。XMLHttpRequest不允许的沙箱中运行,只有像getMyData('some_file')..wasm我知道我只能通过以下方式生成文件
emcc -s WASM=1 main.cpp -o index.wasm
但随后我丢失了包装器,这在使用 SDL 和 GLES 等 emscripten API 时并非易事。
AFIK,JS 包装器调用 fetch() 而不是 XHR。如果可用,您可以使用 Service Worker 来拦截该请求并返回您想要的任何内容。
您还可以修改 Emscripten 源(我有 v1.39.13)来重写默认加载行为。在 file 中$EMSDK/upstream/emscripten/src/preamble.js,根据您的喜好修改函数getBinaryPromise(),getBinary()然后进行构建,emcc以便在 WASM JS 包装器中实现自定义加载行为。
| 归档时间: |
|
| 查看次数: |
1203 次 |
| 最近记录: |