Hi,
I recently ported big C++ application into webassembly and the only issue I have so far is filesystem's .data file size.What I need is to load some resources only on request (fopen call or something similar) from the C++ code, but I can't change all places in C++ code where files are opened to make them use asynchronous load or some JS code.
What I've found is that there is FS.createLazyFile, but it works only in web worker. I tried dumb approach with moving whole generated .js file into worker and it fails with "ReferenceError: screen is not defined". As far as I understand my whole app can't be moved into web worker, because it does rendering. (note: I'm newbie in the web and js related stuff and might be missing something simple)
So my questions are:- is it possible to load resources on demand without changing the C++ code that opens files? I'm ok with making main thread/render stop while it is loading.
- if first is not possible could it be possible to add files into filesystem after the app was started, from the C++ code? All files, that need to be added are located near the .html .js and other files.
In RenPyWeb I initialize the FS with a small core .data, then
download and extract an additional game.zip file, and then I
download some other files in advance through
emscripten_run_script, XMLHttpRequest and FS.writeFile({canOwn:true})
(to save memory).
See
https://github.com/renpy/renpy/blob/master/renpy/webloader.py
emscripten_wget* functions may be more straightforward. I didn't use them because of various asynchronicity issues.
Beware of memory usage, and avoid LZ4 for your
.data because that makes files read-only.
Hope this helps!
There's something in development called "asmfs" in emscripten that may be close, but it's not very clear what its goal is.
emscripten_wget* functions may be more straightforward. I didn't use them because of various asynchronicity issues.
Beware of memory usage, and avoid LZ4 for your .data because that makes files read-only.
--
You received this message because you are subscribed to the Google Groups "emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to emscripten-disc...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/90be231e-ae46-4b38-9446-0dcbfc431409%40googlegroups.com.