前言

openGL的名字如雷贯耳,不管是游戏开发程序员还是普通的应用开发工程师,都知道它的应用非常广泛。但学习openGL是一项比较有难度的事情,主要是门槛比较高,涉及到一些数学知识(特别是线性代数的矩阵)、图形学的知识、一大堆专业术语、API的使用。

因此,要想真正入门openGL和OpenGL ES,找到好的学习资料以及学习路线图,是非常有必要的。本文针对Android开发人员,提出一条较平缓的学习路径。

学习路径

  1. 首先,先对openGL有一个整体的认识,比如先大致看下其官网的介绍,以及维基百科的介绍
  2. 通读一遍learnopengl的前两章节:IntroductionGetting started
  3. (optional)如果觉得阅读步骤2中的英文资料吃力,可以阅读其中文翻译版简介入门两章。
  4. 步骤2和3对应的源码仓库为https://github.com/JoeyDeVries/LearnOpenGL
  5. 阅读Android官方网站关于Android平台openGL的指南及其demo(java层demo,基于 Android framework API。Android平台支持两种方式的openGL编程–Android supports OpenGL both through its framework API and the Native Development Kit (NDK)),并熟悉和练习google官方的openGL ndk demo代码
  6. Android平台openGL入门blog书籍demo。其中demo分为java版本和ndk版本。
  7. openGL核心概念的专业性分析文章
  8. (optional)WebGL对比阅读,(Note:WebGL 1.0基于OpenGL ES 2.0,WebGL 2.0基于OpenGL ES 3.0)。比较好的WebGL教程及其Github仓库,这系列课程从新的角度来讲解WebGL,非常不错的资料,可以作为对照参考。
  9. 学习完1-8,再回过头来,回到openGL的官网。正所谓由简入繁,化繁为简。最终回到最本质最权威的起点,那就是读openGL的官方规范,选择你当前学习的版本,比如glspec33.core.pdf进行深入研究和学习。当然这个阶段再辅以业内较经典的openGL专著一起学习更佳,可在京东或当当网上面搜寻。
  10. 实际动手编写demo甚至中小型游戏(当然,这个在前面学习的步骤也必不可少,实际动手比理论更重要,边学习变实践是最佳的学习途径),掌握OpenGL在各平台下编写游戏的环境搭建、工具使用等配套知识和技能。更重要的是从实际工程的视角来运用OpenGL,这个阶段可以也可以对照当前市面上主流的游戏引擎(其图形引擎的底层基本上都使用OpenGL来实现),了解将OpenGL抽象到更高层次,从而进一步提升游戏开发效率,也使得普通开发人员不需要深入学习和了解OpenGL即可进行游戏开发。
  11. 参照开源的游戏引擎,自己动手,基于OpenGL开发游戏引擎的图形引擎模块(甚至整套引擎,包括物理系统、音频等其他引擎子模块)。

参考资料