學習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開發。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM