【问题标题】:Draw Here MapsView into a GLSurfaceView在这里将 MapsView 绘制成 GLSurfaceView
【发布时间】:2017-01-24 15:18:53
【问题描述】:

我在将 mapView 从 here-api 绘制到 glSurfaceView 时遇到了问题(它应该是 glSurfaceView,因为某些外部设备需要它以确保良好的性能)。

地图完美地绘制到普通的 SurfaceView 中。

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


  1. 从 GLSurfaceView 扩展我的视图:

public class MapView extends GLSurfaceView

  1. 在 ctor 中初始化时设置渲染器:
setRenderer(...)
  1. 地图初始化后开始渲染:
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 during rendering”。

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

GlSurceView 初始化本身很好,因为我可以在其中绘制自己的几何图形。

非常感谢您的帮助。

【问题讨论】:

    标签: android opengl-es here-api


    【解决方案1】:

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

    您尝试使用这种类型的设计来完成什么用例?

    【讨论】:

    • 好的,我现在明白为什么会这样了,谢谢。您的建议是在 GLSurfaceView 和 MapOffscreenRenderer 之间“共享”渲染。由于地图将被渲染两次,我应该期望什么性能影响,或者我错过了什么?我需要 GLSurfaceView 的原因是:我有一个外部显示器,它有一个适当的镜像 SDK,可以在智能手机上呈现内容并将其发送到显示器。这需要使用 GLSurfaceView 向其渲染基于几何的内容。
    • 如果您渲染到某种共享纹理,我预计不会出现太多性能问题。我们已经使用 SDK 实现了类似的用例。如果性能较差,请考虑关闭挤压建筑物。这应该会大大提高性能。
    猜你喜欢
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 2012-10-24
    • 2011-04-20
    • 2011-09-02
    • 2014-07-04
    • 1970-01-01
    • 2014-04-22
    相关资源
    最近更新 更多