当我在我的HTML文件中有多个画布时,emscripten_set_canvas_size
如何知道要调整大小的画布,在这种情况下我该怎么办?
为什么只有一个emscripten_set_main_loop
,如果想要2个循环用于渲染,另一个用于物理,如果想用javascript我会使用requestAnimationFrame
和setInterval
?
答案 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
)非常简单。