2016-12-15 6 views
2

XWalk보기에서 three.js와 함께 https://www.mapbox.com/blog/mapbox-unity/과 동일한 작업을 수행하고 싶습니다.Blink에서 WebGL 컨텍스트를 노출 할 수 있습니까?

간단히 말해서지도 상자 플러그인은지도 상자보기의 OpenGL 컨텍스트와 유니티보기의 OpenGL 컨텍스트에 액세스 할 수있는 컨트롤러입니다. 그런 다음 플러그인은 유니티 OpenGL 컨텍스트에서 맵의 텍스처를 렌더링합니다.

제 경우에는 Unity이지만 Three.js는 사용하지 마십시오. OpenGL 컨텍스트를 WebGL에서 다른 활동의 다른 OpenGL 컨텍스트로 공유하여이 작업을 수행하는 방법을 알 수 있습니다.

  • 가 점멸하고 XWalk
  • betwwen 결합을 통해 WebGL을에서의 OpenGL 컨텍스트를 노출 다른 활동으로는 OpenGL 컨텍스트에서 텍스처 버퍼를 공유 할 XWalk 자바 확장자를 사용하는 데 필요합니다.

주의 사항 :

  • 목표로 plaforms :. 아이폰 OS, 안드로이드, (MapboxGL 윈도우 (사용 D3D)를 지원하지 않기 때문에 윈도우 전화로 D3D 플랫폼에서 실행되는 것을 방지하는 가드)
  • mapboxGL-JS는 오프라인지도 및 기타 고유 기능 만 필요하므로 옵션이 아닙니다.
+0

나는 그렇게 할 수있는 방법이 의심한다. 그러나 mapbox는 잘 표현 된 webgl 렌더러를 제공합니다. 이것은 오픈 소스이며 텍스처/FBO로 맵을 렌더링하도록 수정 될 수 있습니다. 그래서이 텍스쳐를 3Js 나 그 밖의 것으로 사용할 수 있습니다. – 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