2016-09-16 3 views
0

Как emscripten_set_canvas_size знает, какой размер холста можно изменить, если у меня есть несколько из них в моем HTML-файле. Что я могу сделать в этом случае?
Почему может быть только один emscripten_set_main_loop, что, если хотите 2 петли для рендеринга, а другой для физики, в javascript я бы использовал requestAnimationFrame и setInterval?холст emscripten и основная петля

ответ

2

emscripten_set_canvas_size устанавливает размер холста Emscripten, то есть холста, возвращаемого методом Module.canvas объекта Module, который использует Emscripten.

Я не знаю, как одно время выполнения Emscripten может поддерживать несколько холстов или что активный холст может быть изменен после инициализации Emscripten. Тем не менее, в одном документе можно иметь несколько времен выполнения Emscripten, каждый из которых использует собственный холст. Для этого используйте emcc опции компиляции

-s MODULARIZE=1 -s EXPORT_NAME="some_export_name" 

После этого, модульный Emscripten время выполнения может быть реализован в JavaScript, как это:

some_export_name(OptionsModule); 

где OptionsModule является Module объектом, пробег Emscripten -time будет использовать. Это можно сделать несколько раз с различными объектами Module, обычно эти разные объекты возвращают различные HTML-элементы холста в их методах Module.canvas. Пример этой модуляции можно найти: here.

То, что только один основной цикл Emscripten может быть запущен, является просто конструктивным ограничением. Две петли можно моделировать, вызывая одну функцию для рендеринга и одну для физики внутри основного обработчика цикла. Чтобы называть их разными интервалами, достаточно просто отслеживать время (используя SDL_GetTicks).

Смежные вопросы