Итак, чтобы прояснить ваш вопрос, кажется, что вы хотите использовать файлы изображений в wasm, но не хотите, чтобы размер двоичного файла был связан с двоичным кодированием wasm.
В таком случае, почемуВы упаковываете их как отдельный файл и затем передаете его в wasm?Emscripten предлагает виртуальную файловую систему , которая поддерживает предварительную загрузку файлов .
Предположим, ваш файл изображения your_image.png
, добавив --preload-file
возможность emcc вы можете отправить их.Как упакованный файл вне двоичного файла wasm.Например:
$ emcc \
your_source_file.cpp \
--preload-file your_asset_dir/your_image.png \
...other emcc options...
Создает файл .bin
, который содержит your_image.png
(и другие файлы, если вы добавите больше), а также скомпилированные файлы .wasm
, .js
.Этот файл .bin
должен быть намного более компактным, чем жесткое кодирование двоичного файла на C. Ваш wasm (точнее, файл JS, который загружает модуль wasm) загрузит файл .bin
во время выполнения.
И вы можете открыть файл, как обычный файл в локальной файловой системе:
// I think UNIX open() will also work.
FILE *file = fopen("your_image.png", "r");
Для получения более подробной информации об этой функции перейдите к учебнику Emscripten .