略谈OpenGL中的共享上下文(EGL Context)
来源:互联网 发布:微商做图软件有哪些 编辑:程序博客网 时间:2024/06/05 08:53
OpenGL渲染中有一个线程相关的上下文(EGL Context), OpenGL所创建的资源, 其实对程序员可见的仅仅是ID而已, 其内容依赖于这个上下文, 有时候为了方便起见, 在某个线程中创建了上下文之后, 所有的OpenGL操作都转到此线程来调用. 这样在简单的2d/3d 渲染中尚可, 但是如果涉及复杂的OpenGL渲染时, 这样就未必足够, 事实上OpenGL已经考虑到这一点, 上下文是可以在多个线程间共享的, 在使用eglCreateContext时, 可以传入一个已创建成功的上下文, 这样就可以得到一个共享的上下文(Shared Context).
举例来说, Google 为Android 的MediaCodec设计了一套基于OpenGL的Pipeline, 其覆盖的模块包括 视频采集(Video Capture), 视频前处理 (pre-processing), 视频编码(Encode), 视频解码(Decode), 后处理(post processing), 渲染(Render). 通常作设计的时候需要考虑架构的跨平台通用性, 所以上述的整个Pipeline 会在多个线程中工作. 当我们为这个架构设计高度优化的MediaCodec OpenGL Pipeline的时候, 就可以使用Shared Context的方式, 这样, 可以继续沿用跨平台的通用架构和线程模型, 设计思路也比较自然. 如果只为OpenGL创建一个工作线程, 强行把所有的操作转向此线程, 思路过于简单, 粗暴, 其实现必然丑陋. 这是我之前所犯过的设计的失误, 故为此记.
Reference
- https://www.khronos.org/registry/EGL/sdk/docs/man/html/eglCreateContext.xhtml
- 略谈OpenGL中的共享上下文(EGL Context)
- OpenGL—多线程渲染共享上下文(share context)
- Android 中的Context 上下文
- 程序中的context(上下文)
- OPENGL、EGL
- 安卓 Context 上下文+应用共享概括
- Qt应用程序所有窗口共享OpenGL上下文
- EGL Context 创建
- 浅谈oracle中的context(上下文)
- scala中的上下文绑定(context bound)
- Opengl RC(Render context,渲染上下文)与像素格式(转)
- 浅谈oracle中的context(上下文)Oracle Application Context
- OpenGL EGL接口介绍
- OpenGL ES EGL & TLS
- 12、OpenGl EGL
- OpenGL ES 之 EGL
- OpenGL ES 的 EGL
- Android egl和opengl
- 如何获取input框type=file选中的文件对象(FileReader)
- 线程同步
- POJ 2387 经典解法,优先队列的dijkstra+链式前向星存储
- 链表的合并(先排序在合并)
- [paper] Simple Does It
- 略谈OpenGL中的共享上下文(EGL Context)
- 关于R语言创建pdf文本和txt文本的一些问题
- 综合除法和余数定理
- android studio gradle 命令行
- SpringBoot开发详解(十二) -- SpringBoot中执行定时任务
- 杭电oj1049 根据规律 写几个就推出来了
- 杭电oj1040 简单的排序
- 51nod1089---最长回文子串 V2(51nod基础:Manacher算法)
- Linux---lnmp之mysql