android - 了解 EGLSurface、EGL、Surface 和 SurfaceView 如何相互关联
问题描述
我正在学习如何使用 OpenGL ES。我不确定我是否清楚地理解了从绘制到显示它的架构是如何完成的。特别是我想使用:
- EGLS表面
- 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。
解决方案
推荐阅读
- google-cloud-platform - Terraform:log export sink 在正常工作一段时间后抛出此错误“permission denied on bucket”
- ios - 将声明与 Swift 完成处理程序混淆
- php - 在 null 上调用成员函数 AddAddress()
- ios - 构建目标 MyNotificationService:找不到框架
- docker - 如何在 Docker 中更新网站?(本地)
- css - 当不透明度小于1时如何停止用户填写表格
- css - 字体 IranSansX 在 chrome 中无法正常工作
- c# - MongoDB和Oracle之间难以理解的问题(动态组装)
- c# - 发布抽象单元测试,以帮助确保 3rd 方接口实现的质量?
- linux - 如何从 Linux 中的 shell 脚本调用另一个 shell 脚本