之前一直都想好好学习一下Opengl ES,因为自己想往图形界面处理方向集中发展,这样的目标对Opengl ES的要求也是不能少的,推荐两本书:《OpenGL ES应用开发实践指南 Android卷》和《OPENGL ES 3.0编程指南中文原书第2版》,CSDN上也有其他朋友分享的,但是都要四五十个积分,有点抠门了,另外自己把两本书的代码全部整理了下,Github下载链接:Opengl ES Source Code,所有项目使用AndroidStudio运行,全部都可直接运行,收集了Opengl ES2.0和Opengl ES3.0的代码。
如果大家是零基础开始学习的话,作为一个踩坑过来的人,强烈推荐先看《OpenGL ES应用开发实践指南 Android卷》,如果先看3.0的话,根本没有一点眉目,最重点的vertex_shader和fragment_shader根本无法理解,把书看了三四遍,仍然一头雾水。另外,看书的同时,不能光看,必须要自己照着写,新建一个空白项目,一行一行手写,这样才能慢慢理解其中的原理。
我们学习Opengl ES的重点内容有几个:
一、通过不断的研究里边的源码、修改、测试,要重点掌握顶点着色器和片断着色器的原理。顶点着色器和片断着色器应该说是Opengl的核心,如果能熟练掌握这两个着色器,那么你可以使用它们创建出非常炫的效果。对Application而言,这两个着色器就是通过framework提供的API来进行控制的,它们都是直接运行在GPU上的一段代码。
二、通过Android提供的Opengl ES的API接口,如何控制顶点着色器和片断着色器中的变量,从而实现炫丽的界面功能。
三、学习过程中,还必须耐心的理解Matrix类中常用的方法,比如setIdentityM创建单位矩阵、translateM创建平移矩阵、multiplyMM将两个矩阵相乘等等,全部都涉及到数学运算,确实非常头疼,如果不关心数学运算的话,我们就简单知道它能实现什么样的功能就可以了。
当然,实现功能的同时,出错肯定是少不了的,所以我们还得学会调试,强烈推荐使用Graphics API Debugger分析工具,单独针对界面渲染出的,功能非常强大,安装包下载地址:Graphics API Debugger,使用方法非常简单,一定注意,使用的时候,要关闭AndroidStudio,否则无法连接设备。
下面的内容就整理一下自己看过之后得到的一些经验,方便大家查阅,网上相关的资料搜了下,好像很少,对初学者来说效率非常低,希望自己的整理能给大家节省一些时间。
1:Opengl ES 2.0和3.0的对比
相同点:
相比于 OpenGL ES 1.x 系列的固定功能管线,OpenGL ES 2.0和OpenGL ES 3.0都是可编程图形管线。开发者可以自己编写图形管线中的顶点着色器和片段着色器两个阶段的代码。
不同点:
1)兼容性
OpenGL ES 3.0是向后兼容 OpenGL ES 2.0 的。也就是说使用 2.0 编写的应用程序是可以在 3.0 中继续使用的。
2