【发布时间】:2017-05-30 17:11:20
【问题描述】:
我正在编写一个 Android OpenGL ES 应用程序,它可能会加载许多资源、纹理、着色器等。通常,当视图被销毁时,EGLContext 会被丢弃,例如当屏幕方向改变时。鉴于将所有必要的资源加载到 OpenGL、编译着色器、生成 mipmap 等可能需要大量时间,我正在寻找一种方法来在屏幕方向更改时保留 EGL 上下文,这样就不会每次旋转设备时都需要这样做。
更多信息:我正在使用 GLSurfaceView。我尝试实现一个自定义的 EGLContextFactory,它创建一个 EGLContext,然后每次都将相同的上下文返回给新的 GLSurfaceView。但是,当设备旋转时,会抛出 EGL_BAD_CONTEXT 错误,可能是因为旧视图不再存在或因为新视图与创建 EGLContext 以进行绘制的视图不匹配。
必须有某种方法来保存上下文。不幸的是,EGLContext API 非常小,一旦创建就不允许您修改上下文。例如,有没有办法在多个视图之间共享上下文正在绘制的表面?
【问题讨论】:
标签: android opengl-es glsurfaceview egl