我想做的事情与https://www.mapbox.com/blog/mapbox-unity/相同,但在XWalk视图中有三个.js。
简而言之,据我所知,mapbox插件是一个控制器,可以访问Mapbox视图的OpenGL上下文和Unity视图的OpenGL上下文。然后插件在Unity OpenGL上下文中对地图的纹理进行渲染。
在我的情况下,我不使用Unity而是使用Three.js。通过将WebGL中的OpenGL上下文与另一个活动的另一个OpenGL上下文共享,我看到了一种方法。它需要:
重要说明:
答案 0 :(得分:1)
由于WebGL可能在其他API(即D3D)上运行,因此无法从WebGL获取OpenGL上下文。但是,要使用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);
}