05|移动平台的视频渲染(二):OpenGL ES上下文环境搭建
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了在移动平台上使用OpenGL ES进行视频渲染的复杂性,涉及到在Android和iOS平台上搭建OpenGL ES的上下文环境。在Android平台上,可以使用GLSurfaceView简化开发流程,但灵活性较差;而在Native层基于C++环境搭建OpenGL ES的上下文环境则需要引入头文件与so库、EGLDisplay作为绘制的目标以及EGLContext提供线程的上下文。在iOS平台上,使用EAGL进行类似的操作,需要创建Render Buffer并将其绑定到CAEAGLLayer上。文章重点介绍了在Android平台上使用EGL的双缓冲模式以及在Native层使用EGL搭建OpenGL ES的开发环境的具体步骤。此外,还介绍了为绘制线程绑定上下文和销毁资源的操作。另外,文章还介绍了SDL库的介绍与使用,以及在Mac + CLion的C++工程中如何使用sdl2库来构建OpenGL ES的上下文环境。通过本文,读者可以快速了解移动平台上使用OpenGL ES进行视频渲染的基本流程和关键技术点,为后续学习SDL库打下基础。
《快手 · 移动端音视频开发实战》,新⼈⾸单¥59
全部留言(8)
- 最新
- 精选
- 大土豆我感觉这课程小白是听不懂了。我这种之前把EGL的代码当成八股文和模板的,倒是又重新理解了一遍。
作者回复: 小白慢慢学习也是可以看懂的,后续我会加上事例代码,只要想学的人这套课程一定可以提供最系统的内容。
2022-08-03归属地:北京3 - 小跑猫有一个困惑请教,GLSurfaceview本身实现了一套opengl上下文,如果再把它的surface传到native去关联ANAtiveWindow,并在native层创建上下文之后进行渲染,这两套上下文会不会冲突?
作者回复: GLSurfaceview其实就是SurfaceView+OpenGL上下文管理,不能将GLSurfaceVIew的Surface在传递到Native层去的,我们这里讲解的是把SurfaceView或者TexureView的Surface传递到Native层去构建ANativeWindow。
2022-08-28归属地:北京1 - 我的無力雙臂demo的示例代码有链接吗
作者回复: 在课程更新完毕之后,会把代码公布出来哈,大家先学知识。
2022-08-03归属地:北京1 - Aaron老师,请问有源代码的链接吗
编辑回复: 代码🔗 https://github.com/zhanxiaokai
2022-10-22归属地:北京 - 一个正直的小龙猫这节课看不懂了,想问一个其他相关的问题,iOS平台使用metal 会不会更合适一些?
作者回复: 也可以,不过iOS现在使用OpenGL ES底层也会转换为Metal的,像播放器、美颜、预览这种简单应用使用OpenGL ES足以满足。
2022-09-07归属地:北京 - peter请教老师两个问题: Q1:EGL和OpenGL ES是什么关系? EGL是OpenGL ES的一部分吗?比如,EGL是OpenGL ES的底层部分。或者,两者是相互独立的两个实体? Q2:能否提供可运行的源代码?我懂一点安卓,能用AS创建简单的工程,所以最好是安卓版本,基于AndroidStudio的源代码,能运行后产生一个简单的结果即可,比如打印一句话等。文章写得很好,很流畅,逻辑清晰,但没有实际的操作就好像少了一点什么。
作者回复: A1: EGL是OpenGL ES在Android或者linux平台的实现,提供了上下文环境。可以理解为OpenGL定义了一套标准协议,EGL按照标准进行实现,就像JVM有很多家实现一样; A2: 会有的,不过最近在紧急的更新课程,源码预计9月份可以传上去。
2022-08-04归属地:北京 - 王厂长有example代码吗,这个很重要啊
作者回复: 有的,课程更新完毕之后,会慢慢更新上来的。
2022-08-03归属地:北京 - 王建峰提到渲染后的显示的过程,有点不太明白,我们渲染后的图形,如果有多个图层进行合成,合成应该在哪个地方做呢,谁来执行这部分的程序?合成后的图像会写到backing buffer,然后设置成 fronting buffer 到显示屏,可以这样做嘛?2023-08-27归属地:重庆