2016-12-15 2 views
2

https://www.mapbox.com/blog/mapbox-unity/と同じことをしたいが、XWalkビューでthree.jsを使う。BlinkからWebGLコンテキストを公開することはできますか?

つまり、私が理解するように、マップボックスプラグインは、MapboxビューのOpenGLコンテキストとUnityビューのOpenGLコンテキストにアクセスできるコントローラです。次に、プラグインはUnity OpenGLコンテキストでマップのテクスチャにレンダーします。

私の場合、UnityではなくThree.jsを使用します。 WebGLからOpenGLコンテキストを別のアクティビティからの別のOpenGLコンテキストに共有することで、これを行う方法がわかります。別のアクティビティにOpenGLコンテキストからテクスチャバッファを共有するXWalk Javaの拡張機能を使用点滅し、XWalk betwwen結合

  • 経由のWebGLからのOpenGLコンテキストを公開

    • :それはする必要があります。

    重要事項:

    • 目指しplaforms:iOS版、Androidの、(MapboxGLは、Windows(使用D3D)をサポートしていませんように、このようなWindowsの携帯電話としてD3Dプラットフォーム上で実行されている防ぐことができますガード
    • mapboxGL-JSは、オフラインマップやその他のネイティブのみの機能が必要なため、オプションではありません。
  • +0

    。しかし、mapboxはうまく機能するwebglレンダラを提供します。オープンソースなので、マップをテクスチャ/ FBOにレンダリングするように変更することができます。ですから、このテクスチャを3Jなどで使用することができます。 – pleup

    +0

    良い点ですが、オフラインで使用する必要がありますので、JSバージョンは使用できません。 – dagatsoin

    答えて

    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); 
    } 
    
    +0

    あなたの答えはThxですが、マップボックスgl-jsはオプションではありません。私はオフラインマップのようなネイティブ機能が必要です。私はそれについて私の質問を編集しました。 (そしてD3Dについても) – dagatsoin

    関連する問題