在 Android 平台上, 我们使用 OpenGL 的步骤如下:
首先确认使用哪个版本,因为不同的版本有不同的特性, 一般我们使用 2.0 以上, 因为此版本开始支持管道,可以更灵活方便的操作图像数据。
然后确认是用 Java API 还是使用 NDK
在 AndroidManifest 里声明需要的版本(因为某些设备不支持某些版本,这样声明,会在 Google 市场进行检验,如果手机支持需要的版本,才会支持下载)
同样,如果使用了纹理压缩, 需要在 AndroidManifest 里声明纹理压缩的格式
使用 SurfaceView, TextureView, 或者其他能提供 Surface 的组建构建 OpenGL 的上下文,至此,以后的步骤基本就是通用的 OpenGL 的操作了。
接下来是通用的 OpenGL 的操作步骤:
- 将 Bitmap 加载到纹理
- 绘制纹理
这里绘制纹理包含了以下操作:
- 上传顶点组,相当于构造一个模型
- 构造 Program 并加载着色器代码并编译
- 绘制
以上的步骤是适用于对视频处理的时候
但是让我们在来考虑以下, OpenGL API 是一套跟 GPU 对话的接口。GPU 有自己的内存, 它要处理我们的任务, 需要我们给它数据, 这些数据包括 纹理数据, 纹理数据就是一个图片只不过对 GPU 来说它们叫纹理。另一块数据是模型数据,模型数据实际是一些点的数据。另外,除了这些数据外,还有着色器代码,什么叫着色器代码呢,这部分代码是要在 GPU 执行的。
明天: 每天一点点_音视频_OpenGL_着色器管道