将MapsView绘制到GLSurfaceView中

时间:2017-01-23 07:49:29

标签: android opengl-es here-api

我遇到了将here-api中的mapView绘制到glSurfaceView中的问题(它应该是一个glSurfaceView,因为一些外部设备重新使用它以确保良好的性能)。

地图完美地绘制了一个普通的SurfaceView。

我执行以下步骤在GLSurfaceView中创建地图视图:

  1. 从GLSurfaceView扩展我的观点:
  2.   

    public class MapView extends GLSurfaceView

    1. 在ctors中设置渲染器uppon初始化:
    2. setRenderer(...)
      
      1. 初始化地图后开始渲染:
      2. Renderer renderer = new MapOffScreenRenderer(getContext());
        renderer.setMap(map); //mapView, not null
        updateRendererSize(); //update the render size to the screen size
        
        renderer.start(getHolder(), surfaceUpdatedListener); // HERE COMES THE CRASH
        

        如果我试图告诉他将地图绘制到glSurfaceView中,似乎MapOffscreenRenderer崩溃了。 崩溃是一般错误:" 12291 EGL_BAD_ALLOC在渲染过程中"。

        如果我尝试调用renderer.start()func(没有holder param),那么一切都很好(唯一不好的是没有绘制地图)。

        GlSurceView初始化本身很好,因为我能够将自己的几何图形绘制到其中。

        非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

MapOffScreenRenderer在内部使用PBuffer支持的表面及其自己的渲染线程和EGL上下文。它不适合用于推入另一个GLSurfaceView表面。如果你真的想这样做,那么可以创建一个独立的OpenGL表面并在GLSurfaceView和MapOffScreenRenderer之间共享它。

您尝试使用此类设计完成了哪些用例?