Open GL ES應(yīng)用開發(fā)實(shí)踐指南

出版時(shí)間:2013-6-19  出版社:機(jī)械工業(yè)出版社  作者:Erik M.Buck  譯者:徐學(xué)磊  
Tag標(biāo)簽:無  

前言

前言O(shè)penGL ES技術(shù)是蘋果iOS設(shè)備(iPhone、iPod Touch以及iPad)上的用戶界面和圖形繪制能力的基礎(chǔ)?!癊S”代表嵌入式系統(tǒng)(Embedded System),這個(gè)術(shù)語適用于視頻游戲機(jī)、飛機(jī)駕駛員座艙顯示器,并且廣泛適用于幾乎所有生產(chǎn)商的手機(jī)。OpenGL ES是桌面操作系統(tǒng)OpenGL版本的一個(gè)子集。因此,OpenGL ES應(yīng)用通常也適用于桌面系統(tǒng)。本書介紹了最新圖形編程,同時(shí)對(duì)iOS設(shè)備中OpenGL ES的有效使用做了簡(jiǎn)潔說明。書中有很多用于演示圖形編程概念的例子程序。本書對(duì)于從底層位操作到高級(jí)主題的圖形技術(shù)都做了詳細(xì)的解釋。學(xué)習(xí)圖形編程的重大挑戰(zhàn)體現(xiàn)在當(dāng)你第一次試圖整理散落在互聯(lián)網(wǎng)上的成堆的誤導(dǎo)性信息和過時(shí)的例子時(shí)。最初OpenGL是1992年的最先進(jìn)圖形工作站中的一個(gè)小型軟件庫。由于圖形硬件改進(jìn)得頻繁且更新較快,以至于現(xiàn)在的移動(dòng)設(shè)備已經(jīng)勝過OpenGL剛出現(xiàn)時(shí)能夠買到的最好的硬件。隨著硬件技術(shù)的提高,OpenGL設(shè)計(jì)者當(dāng)時(shí)所做的一些折中方法和假設(shè)已不再有意義了?,F(xiàn)在至少存在著12種不同的OpenGL標(biāo)準(zhǔn),不過最新的OpenGL ES省略了很多對(duì)于以前版本中的常見技術(shù)的支持。不幸的是,在谷歌的搜索結(jié)果中還存在相當(dāng)多的過時(shí)的代碼和次優(yōu)方案,以及幾十年來形成的過時(shí)的經(jīng)驗(yàn)。本書將主要關(guān)注最新、最高效的方法,以避免分心于過時(shí)且不相干的練習(xí)上。讀者對(duì)象本書的讀者包括學(xué)習(xí)編程的學(xué)生以及精通其他學(xué)科又想要學(xué)習(xí)圖形的程序員。讀者不需要有計(jì)算機(jī)圖形的經(jīng)驗(yàn),但需要熟悉C或者C++以及面向?qū)ο缶幊痰母拍?。有iOS、Objective-C編程語言和Cocoa Touch框架的使用經(jīng)驗(yàn)是最好的,但不是必需的。在學(xué)完本書后,你將有能力在你自己的iOS應(yīng)用中使用高級(jí)計(jì)算機(jī)圖形技術(shù)。示例代碼本書提供的很多例子可以用作你自己的工程的起始點(diǎn)。這些例子是使用蘋果的免費(fèi)開發(fā)者工具建立的,用的是Objective-C編程語言,以及蘋果的Cocoa Touch面向?qū)ο蟮能浖蚣?。OpenGL ES應(yīng)用程序編程接口(API)由美國國家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI)/國際標(biāo)準(zhǔn)化組織(ISO) C 編程語言的數(shù)據(jù)類型和函數(shù)組成。作為ANSI/ISO C的一個(gè)超集,Objective-C程序原生地支持與OpenGL ES交互。所有iOS應(yīng)用都或多或少地依賴于Cocoa Touch框架,該框架是基于蘋果的Objective-C語言的。一些開發(fā)者通過重用現(xiàn)存的用C或者C++寫就的跨平臺(tái)庫來最小化自己的應(yīng)用與Cocoa Touch的融合。作為UNIX操作系統(tǒng)的一個(gè)派生物,iOS包含了標(biāo)準(zhǔn)C庫和UNIX API,這使得移植跨平臺(tái)代碼到蘋果設(shè)備上變得出人意料的簡(jiǎn)單。OpenGL ES自身的一部分也是由跨平臺(tái)C庫組成的。盡管如此,不想使用Cocoa Touch和Objective-C的開發(fā)者幾乎總是給自己幫倒忙。蘋果面向?qū)ο蟮目蚣苁窡o前例地提升了程序員的生產(chǎn)率。更重要的是,Cocoa Touch提供了用戶對(duì)iOS應(yīng)用所期望的平臺(tái)一體性和精良性。本書包含了Objective-C和Cocoa Touch。蘋果的基于Objective-C的GLKit框架的強(qiáng)大和簡(jiǎn)潔是如此令人信服,以至于它明確地指出了圖形編程的未來發(fā)展方向。如果不使用GLKit而只關(guān)注操作系統(tǒng)的底層C接口和OpenGL ES,本書幾乎無法聲稱自己教授的是最新技術(shù)。Objective-C與ANSI/ISO C一樣,Objective-C是一個(gè)非常小型的語言。有經(jīng)驗(yàn)的C程序員通常會(huì)發(fā)現(xiàn),他們可以在至多幾個(gè)小時(shí)內(nèi)很容易地學(xué)會(huì)Objective-C。Objective-C在開啟了一個(gè)富有表現(xiàn)力的面向?qū)ο蟮木幊田L(fēng)格的同時(shí),最低限度地?cái)U(kuò)充了C語言。本書詳述了圖形編程,同時(shí)在需要的時(shí)候會(huì)對(duì)Objective-C語言的特性做適當(dāng)?shù)慕榻B。你并不需要精通Objective-C或者Cocoa Touch,但是你需要熟悉C或者C++以及面向?qū)ο缶幊痰母拍?。你?huì)發(fā)現(xiàn)使用Objective-C語言實(shí)現(xiàn)應(yīng)用邏輯是非常容易和簡(jiǎn)潔的。Cocoa Touch經(jīng)常簡(jiǎn)化應(yīng)用的設(shè)計(jì),尤其是在響應(yīng)用戶輸入的時(shí)候。C++ANSI/ISO C++編程語言是ANSI/ISO C的一個(gè)不是很完美的超集,但它幾乎總是可以自由地與C語言混合。OpenGL ES與C++可以無縫配合,并且OpenGL結(jié)構(gòu)審查委員會(huì)(ARB)會(huì)監(jiān)督OpenGL ES的規(guī)范,以保證其未來與C++的兼容性。C++編程語言是用于圖形編程的最常見的編程語言之一。但是,C++是一個(gè)非常大型的編程語言,充滿了慣用語法和精妙法則。對(duì)于C++語言要達(dá)到中等掌握水平可能要花費(fèi)數(shù)年的時(shí)間。使用C++做圖形編程有許多優(yōu)勢(shì),例如,使用C++操作符重載功能可以讓圖形程序中數(shù)學(xué)運(yùn)算的表達(dá)更加簡(jiǎn)潔?;旌鲜褂肅++與Objective-C代碼并沒有任何障礙。蘋果開發(fā)者工具甚至支持Objective-C++形式,這種形式允許在一個(gè)語句中混合使用C++和Objective-C代碼。但是Objective-C是iOS的主要編程語言。在蘋果和第三方提供的幾乎所有iOS示例代碼中你都可以發(fā)現(xiàn)Objective-C的代碼。如果你想使用C++也是可以的,但這超出了本書討論的范圍。使用GLKit作為導(dǎo)向本書通過對(duì)蘋果GLKit的探索來講解圖形編程的最新概念。在一些情況下,某些章節(jié)會(huì)通過實(shí)現(xiàn)GLKit的部分對(duì)象來講解和演示這些概念。這樣做有幾個(gè)目的:使用GLKit來簡(jiǎn)化啟動(dòng)項(xiàng)目所需的步驟。在第2章末尾你會(huì)建立起3個(gè)OpenGL ES應(yīng)用,并在你的iOS設(shè)備上運(yùn)行。一章接著一章,逐漸創(chuàng)建彼此關(guān)聯(lián)的很多主題,最終創(chuàng)建一個(gè)可重用的知識(shí)和代碼的基礎(chǔ)結(jié)構(gòu)。當(dāng)付出努力以從零開始創(chuàng)建時(shí),可以幫助你獲取一個(gè)想要的最終結(jié)果的清晰概念。為了獲得有價(jià)值的最終結(jié)果,GLKit設(shè)置了一個(gè)高質(zhì)量的現(xiàn)代基準(zhǔn)。本書會(huì)消除你關(guān)于怎么使用OpenGL ES來實(shí)現(xiàn)和擴(kuò)展GLKit的所有疑云。學(xué)完本書后,你會(huì)成為一個(gè)GLKit專家,徹底理解GLKit,同時(shí)擁有在你的iOS應(yīng)用中使用GLKit的能力。GLKit演示了當(dāng)前對(duì)于OpenGL ES的最好做法,同時(shí)如果你需要,甚至可以將其作為你自己的跨平臺(tái)庫的一個(gè)模板。致謝寫一本書需要很多人的支持。首先,感謝我的妻子Michelle,以及我的孩子Joshua、Emma和Jacob,謝謝你們的理解和支持。其次,感謝出版社的編輯們,他們?yōu)楸緯膶懽魈峁┝朔浅氋F的建議。最后,感謝那些在學(xué)術(shù)上、專業(yè)上、精神上、道德上和藝術(shù)上將影響我一生的人。

內(nèi)容概要

《opengl es應(yīng)用開發(fā)實(shí)踐指南:ios卷》是一本系統(tǒng)的具備實(shí)戰(zhàn)性的opengl es 3d圖形開發(fā)指南。由資深ios開發(fā)專家根據(jù)opengl es最新版本撰寫,不僅詳細(xì)講解了opengl es與glkit的結(jié)合使用,而且還系統(tǒng)講解opengl es的核心概念、技術(shù),以及ios的圖形機(jī)制,并通過大量案例講解了在ios上進(jìn)行opengl es開發(fā)的方法和技巧。
全書共分12章。第1章介紹了使用嵌入式圖形硬件繪制3d圖形的最新方法;第2章講解了如何使用蘋果xcode開發(fā)工具和cocoa touch面向?qū)ο蟮目蚣茉趇phone、ipod touch和ipad中開發(fā)包括3d圖形的程序;第3章涵蓋了紋理的底層概念和常用選項(xiàng);第4章介紹燈光模擬背后的概念,以及利用glkit并使用相對(duì)簡(jiǎn)單的應(yīng)用代碼演示燈光效果;第5章講解并演示從任意視點(diǎn)渲染幾何對(duì)象的技術(shù);第6章介紹如何制作動(dòng)畫;第7章介紹了如何加載并使用模型;第8章講解了特效的使用;第9章介紹能夠提高ios設(shè)備上opengl es 2.0渲染性能的優(yōu)化策略;第10章講解了地形和拾??;第11章回顧了3d渲染所需的常見數(shù)學(xué)運(yùn)算;第12章涵蓋了一個(gè)結(jié)合地形渲染、天空盒、粒子系統(tǒng)、動(dòng)畫、變化視點(diǎn)、燈光、模型和碰撞檢測(cè)技術(shù)的實(shí)例。

作者簡(jiǎn)介

作者:(美國)Erik M.Buck 譯者:徐學(xué)磊Erik M.Buck,資深iOS應(yīng)用和蘋果應(yīng)用開發(fā)專家,與人合著了《Cocoa Programming》和《Cocoa Design Patterns》等經(jīng)典著作。1993年創(chuàng)建了他的第一家公司——EMB,這家公司后來發(fā)展成了航空航天軟件和娛樂軟件產(chǎn)業(yè)的領(lǐng)導(dǎo)者。Buck還在建筑行業(yè)工作過,當(dāng)過理科8年級(jí)的老師,開過帆布油畫肖像展,開發(fā)過替代燃料交通工具。他還是萊特州立大學(xué)計(jì)算機(jī)科學(xué)系的助理教授,當(dāng)前教的課程是iOS編程。

書籍目錄

譯者序前言第1章使用現(xiàn)代移動(dòng)圖形硬件 11.13D渲染 11.2 為圖形處理器提供數(shù)據(jù) 31.2.1 緩存:提供數(shù)據(jù)的最好方式 41.2.2 幀緩存 51.3 OpenGL ES的上下文 61.4 一個(gè)3D場(chǎng)景的幾何數(shù)據(jù) 71.4.1 坐標(biāo)系 71.4.2矢量 91.4.3點(diǎn)、線、三角形 111.5小結(jié) 11第2章讓硬件為你工作 122.1使用OpenGL ES繪制一個(gè)Core Animation層 122.2結(jié)合Cocoa Touch和OpenGL ES 142.2.1Cocoa Touch 142.2.2使用蘋果開發(fā)者工具 152.2.3Cocoa Touch應(yīng)用架構(gòu) 152.3OpenGLES_Ch2_1示例 182.3.1OpenGLES_Ch2_1AppDelegate類 182.3.2Storyboards 192.3.3OpenGLES_Ch2_1ViewController類的interface 192.3.4OpenGLES_Ch2_1ViewController類的實(shí)現(xiàn) 202.3.5支持文件 302.4深入探討GLKView是怎么工作的 312.5對(duì)于GLKit的推斷 402.6小結(jié) 46第3章紋理 483.1 什么是紋理 483.1.1對(duì)齊紋理和幾何圖形 493.1.2紋理的取樣模式 503.1.3MIP 貼圖 523.2OpenGLES_Ch3_1示例 523.3深入探討GLKTextureLoader是怎么工作的 563.4OpenGLES_Ch3_3示例 623.5透明度、混合和多重紋理 633.5.1在OpenGLES_Ch3_4示例中混合片元顏色 643.5.2 示例OpenGLES_Ch3_5中的多重紋理 663.5.3在OpenGLES_Ch3_6示例中自定義紋理 683.6紋理壓縮 703.7小結(jié) 71第4章散發(fā)一些光線 724.1環(huán)境光、漫反射光、鏡面反射光 734.2計(jì)算有多少光線照向每個(gè)三角形 744.3使用GLKit燈光 794.4 OpenGLES_Ch4_1示例 804.5把燈光烘焙進(jìn)紋理中 864.6片元計(jì)算 874.7小結(jié) 88第5章改變你的視點(diǎn) 895.1深度渲染緩存(Depth Render Buffer) 895.2例子OpenGLES_Ch5_1和例子OpenGLES_Ch5_2 915.3深入探討不用GLKit添加深度緩存 965.4變換 985.4.1基本變換 985.4.2順序很重要 1015.4.3projectionMatrix和modelviewMatrix 1025.4.4textureMatrix 1055.5復(fù)合變換手冊(cè) 1075.5.1傾斜 1075.5.2圍著一個(gè)點(diǎn)旋轉(zhuǎn) 1075.5.3圍著一個(gè)點(diǎn)縮放 1075.6透視和平截頭體 1085.7小結(jié) 109第6章動(dòng)畫 1106.1場(chǎng)景內(nèi)移動(dòng):例子OpenGLES_Ch6_1 1116.1.1看向一個(gè)特定的3D位置 1116.1.2使用時(shí)間 1136.2動(dòng)畫化頂點(diǎn)數(shù)據(jù) 1166.2.1使用索引頂點(diǎn) 1186.2.2OpenGLES_Ch6_2示例 1196.3動(dòng)畫化顏色和燈光:例子OpenGLES_Ch6_3 1226.4動(dòng)畫化紋理 1266.4.1OpenGLES_Ch6_4示例 1266.4.2OpenGLES_Ch6_5示例 1286.5小結(jié) 130第7章加載和使用模型 1317.1建模工具和格式 1327.2讀取modelplist文件 1367.3OpenGLES_Ch7_1示例 1387.4高級(jí)模型 1427.4.1骨骼動(dòng)畫 1427.4.2蒙皮 1477.4.3 逆動(dòng)力學(xué)和物理模擬 1507.5小結(jié) 150第8章特效 1518.1天空盒 1518.2深入探討GLKSkyboxEffect是怎么工作的 1548.3 粒子 1648.4公告牌 1708.5小結(jié) 177第9章優(yōu)化 1789.1盡可能減少渲染 1789.1.1基于視平截體的剔除 1799.1.2簡(jiǎn)化 1899.2不要猜:解析(Profile) 1899.2.1工具OpenGL ES Performance Detective 1909.2.2工具Instruments 1919.3盡量減少緩存復(fù)制 1929.4盡量減少狀態(tài)變化 1929.5小結(jié) 193第10章地形和拾取 19510.1地形的實(shí)現(xiàn) 19510.1.1高度圖 19610.1.2地形瓦片 19710.1.3地形效果 20010.2添加模型 20510.2.1模型放置 20610.2.2模型效果 20610.3OpenGL ES攝像機(jī) 20810.4拾取 21310.5優(yōu)化 22110.6小結(jié) 228第11章數(shù)學(xué)速查 22911.1概述 22911.2解碼矩陣 23011.2.1從平截體獲取矩陣 23311.2.2透視 23611.2.3矢量的坐標(biāo)軸分量 23711.2.4點(diǎn)變換 23811.2.5 轉(zhuǎn)置矩陣和逆矩陣 24011.3四元法 24111.4常用的圖形數(shù)學(xué) 24211.4.1簡(jiǎn)單矢量運(yùn)算 24211.4.2矢量標(biāo)量積 24311.4.3矢量的矢量積 24311.4.4model-view矩陣 24411.4.5投影矩陣 24511.5小結(jié) 245第12章理清整體思路 24612.1概述 24612.2一切如故 24812.2.1控制器子系統(tǒng) 24912.2.2模型子系統(tǒng) 25012.2.3 視圖子系統(tǒng) 25512.3設(shè)備動(dòng)作 26312.4小結(jié) 265

編輯推薦

《OpenGL ES應(yīng)用開發(fā)實(shí)踐指南:iOS卷》編輯推薦:資深iOS開發(fā)專家根據(jù)OpenGL ES最新版本撰寫,詳細(xì)講解了OpenGL ES與GLKit的結(jié)合使用。書中系統(tǒng)講解OpenGL ES的核心概念、技術(shù),以及iOS的圖形機(jī)制,通過大量案例講解了在iOS上進(jìn)行OpenGL ES開發(fā)的方法和技巧。

圖書封面

圖書標(biāo)簽Tags

評(píng)論、評(píng)分、閱讀與下載


    Open GL ES應(yīng)用開發(fā)實(shí)踐指南 PDF格式下載


用戶評(píng)論 (總計(jì)3條)

 
 

  •   有點(diǎn)難度,不是很容易懂
  •   都是講解用的ios封裝的glkit進(jìn)行opengles繪制,想跨平臺(tái)的就不要考慮了
  •   內(nèi)容一般般了印刷質(zhì)量一般
 

250萬本中文圖書簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7