了解 EGLSurface、EGL、Surface 和 SurfaceView 之间如何相互关联

And*_*Dev 5 android opengl-es surfaceview egl

我正在学习如何使用 OpenGL ES。我不确定我是否清楚地理解了从绘制某些东西到显示它的架构是如何完成的。我特别想使用:

  • EGL表面
  • 乙二醇
  • 表面视图

有一个名为 GLSurfaceView 的组件将所有这些组件连接在一起。但我更喜欢独立地处理其中的每一个,以便我更好地理解它们是如何工作的。

如果我对它的工作原理有误,请纠正我:

EGLSurface 是 EGL 创建的组件。您可以使用 OpenGL ES (GLES) 在 EGLSurface 上绘图。为了让 EGL 创建 EGLSurface,您必须为其提供一个 Surface。SurfaceView 提供该 Surface,但它还提供最终用于显示 EGLSurface 上绘制内容的视图。您使用 EGL 并调用 eglCreateWindowSurface 函数并向其传递来自 SurfaceView 的 Surface。然后,EGL 创建一个 EGLSurface 并将其绑定到它所提供的 Surface。从那时起,当您在 EGLSurface 上绘制然后调用 eglSwapBuffers 时,绘制的帧将被发送到 Surface,而 Surface 又将其发送到显示它的 SurfaceView。