emscripten画布和主循环

时间:2016-09-16 05:31:37

标签: javascript emscripten

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

1 个答案:

答案 0 :(得分:2)

emscripten_set_canvas_size设置Emscripten画布的大小,即Emscripten使用的Module.canvas对象的Module方法返回的画布。

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

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

执行此操作后,模块化的Emscripten运行时可以在JavaScript中实例化,如下所示:

some_export_name(OptionsModule);

其中OptionsModule是Emscripten运行时将使用的Module对象。这可以使用不同的Module对象多次完成,通常这些不同的对象将在其Module.canvas方法中返回不同的画布HTML元素。可以找到这种模块化的一个例子here

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