emscripten canvas 和主循环

emscripten canvas and main loop

当我的 HTML 文件中有多个 emscripten_set_canvas_size 时,emscripten_set_canvas_size 如何知道要调整哪个 canvas 的大小,在这种情况下我能做什么?
为什么只能有一个 emscripten_set_main_loop,如果想要 2 个循环,一个用于渲染,另一个用于物理,在 javascript 中我会使用 requestAnimationFramesetInterval

emscripten_set_canvas_size设置Emscripten的大小canvas,即canvasreturn通过Module.canvas方法编辑的[=14] =] Emscripten 使用的对象。

我不知道一个 Emscripten 运行 时间可以支持多个 canvas 或一旦 Emscripten 初始化就可以更改活动的 canvas。但是,在同一个文档中可以有多个 Emscripten 运行 次,每次都使用它自己的 canvas。为此,请使用 emcc 编译选项

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

这样做之后,模块化的 Emscripten 运行-time 可以在 JavaScript 中实例化,如下所示:

some_export_name(OptionsModule);

其中 OptionsModule 是 Emscripten 运行 时代将使用的 Module 对象。这可以用不同的 Module 对象多次完成,通常这些不同的对象会在其 Module.canvas 方法中 return 不同的 canvas HTML 元素。可以在 here.

中找到这种模块化的示例

只有一个 Emscripten 主循环 运行 只是一个设计限制。通过在主循环处理程序中调用一个用于渲染的函数和一个用于物理的函数,可以模拟两个循环。要以不同的间隔调用它们,您自己跟踪时间非常简单(使用 SDL_GetTicks)。