Войти
ПрограммированиеФорумОбщее

Emscripten (C/C++, WASM, Web) несколько циклов в программе

#0
12:19, 4 июля 2021

Нужно портануть сорцы программы, написанной на С++ на Web с помощью Emscripten.

Другие варианты (типа как переписать всё ручками с Си на JavaScript я не рассматриваю).

Есть проблема.  Emscripten любит асинхронную модель и с одним циклом.
Цикл делается с частотой кадров дисплея через следующие функции:

#include <emscripten.h>

void GameLoop(void *a); //что что надо делать в цикле

...

emscripten_set_main_loop_timing(EM_TIMING_RAF,1); //настройка тайминга
emscripten_set_main_loop_arg(GameLoop,NULL,-1,1); //засовываем функцию для циклического выполнения

И линковать с флагом:

-s ASYNCIFY

При таком раскладе всё работает нормально, если петля цикла одна.

Как сделать нормально, чтобы было несколько циклов?

Сделать тупо циклы как в Си - нельзя, браузер замораживается!

Программа кроме SDL2 ничего не использует.

Вопрос - как?


#1
14:20, 4 июля 2021

А как это на C++ в исходной программе сделано? Там ведь тоже многолупность из коробки не поддерживается.

#2
(Правка: 15:20) 15:19, 4 июля 2021

В конце функции запускай евент на вызов этой же функции.
emscripten_async_call

#3
5:19, 6 июля 2021

Всё не то.

Решение найдено.

#4
9:03, 16 июля 2021

И разумеется об этом решении ни в коем случае нельзя говорить,
а то вдруг еще пригодится кому-нибудь...

ПрограммированиеФорумОбщее