Opengl 是否可以从Blink中公开WebGL上下文?

Opengl 是否可以从Blink中公开WebGL上下文?,opengl,webgl,blink,xwalkview,Opengl,Webgl,Blink,Xwalkview,我想做的事情与XWalk视图中的three.js相同 简而言之,据我所知,mapbox插件是一个控制器,它可以访问mapbox视图的OpenGL上下文和Unity视图的OpenGL上下文。然后插件在Unity OpenGL上下文中对贴图的纹理进行渲染 在我的例子中,我不使用Unity,而是使用Three.js。我看到了一种方法,通过将OpenGL上下文从WebGL共享到另一个活动的另一个OpenGL上下文。它需要: 通过Blink和XWalk之间的绑定从webGL公开OpenGL上下文 使用X

我想做的事情与XWalk视图中的three.js相同

简而言之,据我所知,mapbox插件是一个控制器,它可以访问mapbox视图的OpenGL上下文和Unity视图的OpenGL上下文。然后插件在Unity OpenGL上下文中对贴图的纹理进行渲染

在我的例子中,我不使用Unity,而是使用Three.js。我看到了一种方法,通过将OpenGL上下文从WebGL共享到另一个活动的另一个OpenGL上下文。它需要:

  • 通过Blink和XWalk之间的绑定从webGL公开OpenGL上下文
  • 使用XWalk Java扩展将纹理缓冲区从OpenGL上下文共享到另一个活动
重要注意事项:

  • 目标平台:iOS、Android(由于MapboxGL不支持Windows(使用D3D),防护装置将阻止在D3D平台(如Windows phone)上运行。)
  • mapboxGL JS不是一个选项,因为我需要离线地图和其他纯本机功能

    • 无法从WebGL one获取OpenGL上下文,因为WebGL可能在其他API(即D3D)上工作。但是,要使用Three.js实现类似的功能,可以使用mapbox gl js。只需将贴图渲染到屏幕外画布(未添加到DOM),并将其用作Three.js场景中平面的纹理

      大致上,它可能看起来像这样:

      const map = new Map({ /* options */ });
      const texture = new THREE.CanvasTexture(map.getCanvas(), /* ... */);
      
      map.on('render', () => {
          requestAnimationFrame(render);
          texture.needsUpdate = true;
      });
      
      function render() {
          myThreejsRenderer.render(mySceneWhichUsesTexture, camera);
      }
      

      我怀疑有什么办法可以做到这一点。但是,mapbox提供了功能完善的webgl渲染器。它是开源的,可以修改以将贴图渲染到纹理/FBO上。所以你可以在threejs中使用这个纹理。这很好,但我需要离线使用它,所以我不能使用JS版本。Thx作为你的答案,但mapbox gl JS不是一个选项。我需要本机功能,如离线地图。我编辑了我的问题。(也大约是D3D)