一. 什么是 OpenGL ES
OpenGL 是一种应用程序的编程接口, 它是一种可以对图像硬件设备进行访问的软件库
OpenGL ES(OpenGL for Embedded Systems) 是 OpenGL 三维图形 API 的子集, 针对手机游戏主机等嵌入式设备而设计, 用于支持高性能的 2D 和 3D 图形渲染
二. 学习目的
- 更加深入的了解 Android 的图像渲染架构
- Surface
- SurfaceTexture
- SurfaceFlinger
- 用于相机开发
- 更加高效的实现滤镜, 贴纸等效果
- 共享 EGL 上下文实现视频录制
- 用于音视频开发
- 使用 OpenGL ES 实现视频流的渲染, 实现加水印等功能
三. 选择学习 2.0 的原因
目前 Android 端的支持情况如上图所示, 选择 2.0 的原因如下
- 版本兼容性较好 2.2 - xxx
- 学习资料更多, 代码通用性强
- 比起 1.0, 采用了可编程渲染管线, 渲染能力大幅提高
四. 学习路线
- 着色器与渲染管线
- 着色语言 glsl(GL Shading Language)
- 坐标系统
- 局部坐标系
- 世界坐标系
- 观察者坐标系
- 投影
- 裁剪坐标系
- 屏幕坐标系
- 2D 图形绘制
- 线
- 三角
- 矩形
- 圆形
- 纹理
- 纹理的坐标系
- 纹理环绕
- 纹理过滤
- 纹理绘制
- fitCenter
- centerCrop
- 顶点缓冲 VBO
- 帧缓冲 FBO
- EGL 的应用
- 自定义相机实战