如何使用emscripten在WebAssembly中使用OffscreenCanvas初始化WebGL2上下文

问题描述 投票:0回答:1

我将在网络工作者中做一些工作,这样我就不能在 DOM 树上有画布元素。但是,

emscripten_webgl_create_context
api 需要一个附加到 DOM 树中的画布的 id。我知道我可以通过
document.createElement('canvas')
创建一个画布对象,然后将该画布传输到屏幕外。但是,我怎样才能将这个屏幕外画布上下文传递给 wasm?

简而言之,如何在工作线程中使用 emscripten 创建

WebGL2RenderingContext
OffScreenCanvas

javascript webassembly emscripten
1个回答
0
投票

我想我找到了一个解决方案,但它需要深入研究 emscripten 生成的代码的内部结构:

EM_JS( intptr_t, createOffscreenContext, ( int width, int height ), {
   const offscreenCanvas = new OffscreenCanvas( width, height );
   const contextAttributes = {
      majorVersion: 2,
      minorVersion: 0,
      explicitSwapControl: false,
      proxyContextToMainThread: false,
   };
   const contextHandle = GL.createContext( offscreenCanvas, contextAttributes );
   return contextHandle;
} );

我在深入研究 Emscripten 生成的 js 文件并看到

emscripten_webgl_create_context()
最终只是调用
GL.createContext()
后想到了这个。

© www.soinside.com 2019 - 2024. All rights reserved.