学习OpenGL-ES: 0 - 方法和资料

  • 为何学习

为了更好地理解计算机图形学相关基础知识,更好地理解3D引擎的底层工作原理,从而更好地进行移动领域的3D应用开发。

需要说明的是:不需学习OpenGL-ES,也可以基于3D引擎进行3D应用开发。

  • 什么是OpenGL-ES 

OpenGL-ES是平台无关的广泛应用于移动设备的2D/3D图形API(除了微软系的智能手机一般都支持该API),抽象层次较低,一般作为3D引擎的渲染底层,较少直接用于应用开发。OpenGL-ES是OpenGL的一个分支版本,针对嵌入式系统做了精简,一方面便于支持相对简单的嵌入式设备,另一方面可以较少地承担OpenGL历史包袱之累。 

  • 版本 

目前有三个版本: 

  a, 1.0 & 1.1 

固定渲染管线,基于OpenGL 1.5精简,在可编程管线大行其道的今天,已显过时,不建议花费过多时间进行学习。GPU广泛支持。1.1完全兼容1.0. Android SDK支持。 

  b, 2.0 

可编程渲染管线,基于OpenGL2.0精简,非统一架构,包含顶点shader和片元shader,不兼容1.X,目前几乎所有新出货的智能手机GPU都支持,属于目前的主流版本。Android SDK支持。 

c, 3.0 

最新版本api,2012年秋发布,可编程渲染管线,已有少量GPU支持。 

  • 如何学习 

对完全没有基础的同学,建议按如下顺序进行: 

1,了解3D图形处理的大体流程,即输入的各种数据(顶点、纹理等)是如何转变为屏幕上的图形的。这其中经过了哪些阶段,各个阶段大体上做了什么,有个总体的概念。 

2,学习3D数学,至少需要理解这些基础之后再学习API:点和向量在坐标系(标架)中的表示、向量运算及其几何表示、点和向量的关系、矩阵运算、矩阵变换的原理和推导、齐次坐标。 

3,学习OpenGL-ES API,学习某个开源的3D引擎,学习高抽象层次上的3D世界表述。尝试自己实现一些模块,特别是数学方面。

  4,重复2和3,它们是相互促进的。

  5,开发完整的应用,应该包含OpenGL ES的所有基本特性。

  建议:数学基础非常重要,这是支撑的基础;总体观感(隐喻)非常重要,这是系统的全局拼图,让你更容易理解特定概念。  

  • 建议的学习资料 

  A,官网

http://www.khronos.org/opengles/ 

  其文档主要分为几类: 

  specification: 标准(规格)说明书,描述了所有细节。 

Online Reference Pages: 在线API文档,说明了所有API的用法。 

Quick Reference Card: 快速参考卡,以图片的形式展现了总体框架。 

对2.0和3.0还有GLESSL(GLES着色语言)的参考文档。 

B, 数学 

《3D数学基础:图形与游戏开发》:对初学者来说很棒的一本书,相对易于理解,不足之处在于从数学角度来说不够严谨和彻底,依然会有知其然而不知其所以然的地方。 

《交互式计算机图形学 - 基于OpenGL的自顶向下方法》(第六版):计算机图形学入门导论,对前者是很好的数学和图形学基础方面的补充,对学习OpenGL也有足够的价值,第六版较新,算是国内少有的中文版的现代的图形学教程。不足之处在于其假设读者有了一定的线性代数、解析几何、微积分方面的知识,但总体来说也比较适合初学者。 

  C,API

  我所了解的ES相关的书只有两本:《OpenGL ES 2.0 Programming Guide》和国人的《Android 3D 游戏开发技术宝典 - OpenGL ES 2.0》。

  由于OpenGL和OpenGL ES的关系,也可以参考OpenGL的系列教材,包括红宝书、橙宝书、蓝宝书。

  《3D游戏编程大师技巧》自己实现了一个软渲染引擎,虽然有些老,也值得一看,对数学和基础概念会有帮助。

  建议结合官网文档进行阅读。

  D,引擎

  OGRE: C++写的开源3D渲染引擎,质量、资料、社区都比较完备。

  JMONKEY 3: Java写的开源3D游戏引擎,支持ANDROID,资料、社区比较完备。

  Unity3D: 商业引擎,非开源,上手容易,平台支持广泛,基于组件的现代设计思想值得参考。

  E,社区

  http://www.altdevblogaday.com/: 高质量的游戏开发博客集中地。

  http://www.gamedev.net: 游戏开发的老牌名站。

  http://www.opengpu.org/forum.php: 知名国内计算机图形学站点。

  F, 更多书籍推荐

  http://www.realtimerendering.com/books.html

  • 相关工具

  a,模拟器:

   http://www.klayge.org/2012/01/28/opengl-es-emulator%E5%86%8D%E6%AC%A1%E6%A8%AA%E5%90%91%E6%AF%94%E8%BE%83/

  b,shader编辑器

  PowerVR SDK。

  ARM的作为Eclipse 插件提供的Mali GUP Shader Development Studio(http://malideveloper.arm.com/develop-for-mali/tools/mali-gpu-shader-development-studio/)

  都提供了离线编译、语法高亮、错误提示、实时效果展示功能,后者很适合用于Android开发。

原文链接

你可能感兴趣的:(OpenGL,3D引擎)