-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

OpenGL ES應用開發實踐指南:Android卷

( 簡體 字)
作者:(美)Kevin Brothaler 著類別:1. -> 多媒體 -> OpenGL
   2. -> 程式設計 -> 手機程式 -> Android
譯者:
出版社:機械工業出版社OpenGL ES應用開發實踐指南:Android卷 3dWoo書號: 39768
詢問書籍請說出此書號!

缺書
NT售價: 245

出版日:9/1/2014
頁數:227
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111477822
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

oid剛剛經歷了一個難以置信的增長周期,全世界的消費者手里有超過7.5億臺設備,并且每天都有一百多萬臺設備被激活。和Apple一樣,在每一臺Android手機和平板上也有個集中的市場,稱為Google Play。隨著這個市場被安裝到每臺Android設備上,對任何一個夢想著發布自己的游戲或者壁紙的人來說,這都是個前所未有的機會。

在Android上,與Apple的iOS及許多其他移動平臺一樣,開發者可以使用一個跨平臺應用編程接口創建二維或者三維圖形,這個接口稱為OpenGL;OpenGL已經用于桌面系統很長時間了,但移動平臺上使用的是一個特殊的嵌入式版本,叫做OpenGL ES。第一個版本的OpenGL ES把三維帶進了移動平臺,它在開發者中非常流行,因為它非常簡單易學,同時還包含了一個定義好的特性集合。然而,這個特性集合也很有限,它無法跟上大多數高性能智能手機和平板電腦所提供的先進的、卓越的特性。

發展到了OpenGL ES 2.0,大多數舊的API被淘汰了,取而代之的是新的可編程API,它更容易增加特殊的效果,也能利用最新的硬件所提供的優勢。這些設備現在也能生成其他競爭平臺幾年前就實現的圖形了!然而,為了利用這個能力,我們需要學習2.0引進的這些新的API。在2012年8月,Khronos工作組最終確定了下一版本的規范,即OpenGL ES 3.0,它完全兼容2.0,只是在其基礎上擴展了一些先進的特性。

因此,Android上的OpenGL到底能做什么呢?我們可以創建令人驚艷的動態壁紙(live wallpaper),這些壁紙可以被數百萬的用戶下載;我們可以創建有競爭力的三維游戲,它們有著栩栩如生的、令人窒息的圖形效果。隨著硬件成本的降低,以及在線商店的大量普及,是時候開始學習了!

本書的主要內容

快速瀏覽一下我們將要討論的內容:

在本書第一部分,會學習如何創建一個簡單的空氣曲棍球游戲,包括觸控、紋理和基本原理。這個項目會教你如何成功地初始化OpenGL并將數據發送到屏幕上,以及如何使用基本的向量和矩陣數學創建三維世界。你也會學到Android的許多特定細節,比如在Dalvik虛擬機和本地環境之間編碼數據(marshal data)以及如何在主線程和渲染線程間安全地傳送數據。

在本書第二部分,你就可以在第一部分學習到的知識的基礎上開始搭建三維世界中的效果,比如光照和地形渲染,接下來還會學習如何創建可以運行在Android主屏幕(home screen)上的動態壁紙。

本書的讀者對象

如果對在Android上開發更高級的圖形程序感興趣,本書就是為你所寫的。本書假定你有一些編程經驗,包括Java和Android的經驗。

Java

如果你以前用過其他托管語言(managed language),比如C#,轉到Java就很簡單了。如果你有更多關于本地語言(native language)的經驗,你就要注意它們的主要區別之一,Android上的Java是運行在虛擬機上的、使用垃圾回收的語言,這既有益處也有代價。

下面這些書籍會更好地幫助你學習Java:

《The Java Programming Language》[AGH05], 作者:Ken Arnold、James Gosling和 David Holmes

《Effective Java》[Blo 08],作者:Joshua Bloch

《Thinking in Java》[Eck 06],作者:Bruce Eckel

Android

一旦你熟悉了Java,要為Android開發軟件就需要一些相關的庫和方法的經驗了。為了覆蓋所有的基本知識,我推薦閱讀Ed Burnette的書籍《Hello,Android》[Bur 10]。你也可以看看Google的Android在線培訓中的前兩節課:

構建第一個應用

管理Activity組件的生命周期

對于本書的大部分內容,盡管使用模擬器就足夠了,但手上有個Android設備會更容易些。稍后我們會給出更多細節,參見1.1節。

這些應該足夠讓你通讀本書了。我們會從第一個基本原理開始就包括所有的基礎知識,這樣,你就不需要任何三維圖形的編程經驗了,并且我們也會在書中講到一些數學知識,如果你過去學過三角學和線性代數,那你就準備得很充分了!如果沒有,不用害怕,講解過程中,所有的東西都會詳細解釋的。

如何閱讀本書

每一章都是在前一章的基礎上講解的,因此,最好按順序閱讀。所有的示例代碼都可以在線下載(參見下面的“在線資源”一節),這樣,當你想查看某個特定章節時,就可以下載前一章的整個項目,以此作為基礎開始;如果你忘了或者想要從頭開始,這會有幫助。

慣例

我們會使用OpenGL代指OpenGL ES 2.0,它是移動平臺和網頁上的OpenGL現代的

版本。

在本書的大部分章節中,我們使用GLES20類,它是Android軟件開發包(SDK)的一部分。因為大多數的OpenGL常量和方法都在這個類里定義,我一般會忽略類名,而直接提及常量或方法;我們也會在代碼中使用靜態導入(static import),從而忽略類名(參見1.5 節)。

在線資源

本書的所有資源都可以在網站http://pragprog.com/book/kbogla找到,包括示例代碼以及相應的圖像和紋理。

你可以訪問Learn OpenGL ES網站,那有我維護的一個OpenGL ES教程的博客。

下面是一些很好的在線資源列表,它們由Khronos工作組維護:

OpenGL ES 2.0 API快速參考卡片

OpenGL ES 2.0 參考頁

OpenGL ES 著色器語言(GLSL ES)參考頁

The OpenGL ES著色器語言

OpenGL ES Common Profile Specification 版本 2.0.25(完整規范)

我推薦把參考卡片打印出來放在手邊,這樣就能在需要時快速參考。Android使用EGL

(一個本地平臺接口)幫助你配置顯示設備,你可能發現了Khronos的EGL API的注冊表也很有用。

現在開始吧

如今擁有功能強大的手機和平板電腦的人比以前多了,并且市場還在持續增長。Android的軟件工具使得開發者更容易為Android開發軟件,并且Google的Play Store使分享應用變得更加容易。讓我們向第1章前進吧。船起錨了!
內容簡介:

幾百萬部設備的出貨量,使Android取得了前所未有的蓬勃發展。這是你學習為Android開發三維游戲和動態壁紙的最佳時機。你會學到所有關于著色器和OpenGL管道的內容,并發現OpenGL ES 2.0的魔力,相比前一個版本,它有很多更加豐富的功能特性。如果你能用Java編程,并且愿意與他人分享你的視覺創意,這本書就是為你而寫。
要在Android上創建引人注目的圖形,這本書將講解你所需要的所有知識。通過構建一個簡單的空氣曲棍球游戲,你會學習到OpenGL的基礎內容,在這個開發過程中,你會看到如何初始化OpenGL,以及使用著色器編寫圖形管道。每一節都是在前一節的基礎上構建的,一步步地添加顏色、著色器、三維投影、觸控交互等。
然后,你會知道如何把你的想法變成可以在主屏幕上運行的動態壁紙。你將學到更多高級的特效,包括粒子、光照模型和深度緩沖區。當調試程序的時候,你會知道需要從何處下手;當把應用部署到市場上的時候,你會明白需要注意哪些問題。
對新手來說,OpenGL可能有點黑暗藝術的意味。當你閱讀這本書時,你將從最基本的原理開始學習每一個新概念。你不僅僅只學會了一個功能特性;你也會理解它是如何工作的,以及為何它的工作方式是那樣的。這里所介紹的技術也可應用于其他平臺,比如iOS或HTML5 WebGL。

本書是一本系統的OpenGL三維游戲和動態壁紙開發指南。由資深Android開發專家根據OpenGL ES 2.0版本撰寫,不僅系統地講解了OpenGL ES的核心概念、技術,以及Android的圖形機制,還通過大量案例講解了在Android上進行OpenGL ES開發的方法和技巧。
本書分為兩部分,共15章:第1章主要介紹開發環境的安裝和配置,以及如何創建一個新的OpenGL項目和清空屏幕;第一部分(第2~9章)詳細講解創建一個簡單的空氣曲棍球游戲的觸控、紋理和基本原理,包括如何成功地初始化OpenGL并將數據發送到屏幕上,如何使用基本的向量和矩陣數學創建三維世界,以及Android的許多特定細節,比如在Dalvik虛擬機和本地環境之間編碼數據(marshal data)以及如何在主線程和渲染線程間安全地傳送數據。第二部分(第10~15章)詳細介紹如何搭建三維世界中的效果,比如光照和地形渲染,以及如何創建可以運行在Android主屏幕上的動態壁紙。此外,附錄還提供了正交投影和透視投影兩個OpenGL常用投影類型背后的矩陣知識,以及一些實用的應用程序調試技巧。
目錄:

推薦序

致 謝

前 言

第1章 準備開始 1

1.1 安裝工具 1

1.2 創建第一個程序 3

1.3 初始化OpenGL 5

1.4 創建Renderer類 10

1.5 使用靜態導入 12

1.6 小結 12

第一部分 一個簡單的空氣曲棍球游戲

第2章 定義頂點和著色器 14

2.1 為什么選擇空氣曲棍球 14

2.2 不要從頭開始 15

2.3 定義空氣曲棍球桌子的結構 16

2.4 使數據可以被OpenGL存取 18

2.5 引入OpenGL管道 20

2.6 OpenGL顏色模型 25

2.7 小結 26

第3章 編譯著色器及在屏幕上繪圖 27

3.1 加載著色器 27

3.2 編譯著色器 29

3.3 把著色器一起鏈接進OpenGL的程序 33

3.4 做最后的拼接 35

3.5 在屏幕上繪制 39

3.6 小結 43

3.7 練習 43

第4章 增加顏色和著色 44

4.1 平滑著色 45

4.2 引入三角形扇 45

4.3 增加一個新的顏色屬性 46

4.4 使用新的顏色屬性渲染 52

4.5 小結 55

4.6 練習 55

第5章 調整屏幕的寬高比 56

5.1 寬高比的問題 57

5.2 使用虛擬坐標空間 58

5.3 線性代數基礎 59

5.4 定義正交投影 62

5.5 加入正交投影 64

5.6 小結 67

5.7 練習 67

第6章 進入第三維 68

6.1 三維的藝術 68

6.2 從著色器到屏幕的坐標變換 69

6.3 添加w分量創建三維圖 71

6.4 使用透視投影 72

6.5 定義透視投影 73

6.6 在代碼中創建投影矩陣 75

6.7 開始使用投影矩陣 76

6.8 增加旋轉 79

6.9 小結 81

6.10 練習 82

第7章 用紋理增加細節 83

7.1 理解紋理 84

7.2 把紋理加載進OpenGL中 85

7.3 創建新的著色器集合 90

7.4 為頂點數據創建新的類結構 91

7.5 為著色器程序添加類 95

7.6 繪制紋理 99

7.7 小結 101

7.8 練習 101

第8章 構建簡單物體 102

8.1 合并三角形帶和三角形扇 102

8.2 添加幾何圖形的類 104

8.3 添加物體構建器 105

8.4 更新物體 112

8.5 更新著色器 113

8.6 集成所有的變化 114

8.7 小結 119

8.8 練習 119

第9章 增加觸控反饋:與空氣曲棍球游戲交互 120

9.1 為Activity增加觸控支持 120

9.2 增加相交測試 122

9.3 通過拖動移動物體 130

9.4 增加碰撞檢測 132

9.5 小結 136

9.6 練習 137

第二部分 構建三維世界

第10章 用粒子增添趣味 140

10.1 為一個簡單的粒子系統創建一組著色器 141

10.2 添加粒子系統 144

10.3 繪制粒子系統 148

10.4 擴散粒子 150

10.5 添加重力 152

10.6 用累加混合技術混合粒子 153

10.7 自定義點的外形 153

10.8 把每個點繪制為一個精靈 154

10.9 小結 156

10.10 練習 156

第11章 增加天空盒 157

11.1 創建天空盒 157

11.2 把立方體貼圖加載到OpenGL中 159

11.3 創建立方體 161

11.4 增加天空盒著色器程序 163

11.5 在場景中加入天空盒 165

11.6 圍繞場景移動相機 167

11.7 小結 169

11.8 練習 169

第12章 增加地形 170

12.1 創建高度圖 170

12.2 創建頂點和索引緩沖區對象 171

12.3 加載高度圖 173

12.4 繪制高度圖 176

12.5 遮罩被隱藏的物體 180

12.6 小結 183

12.7 練習 183

第13章 點亮世界 184

13.1 仿真光照的效果 184

13.2 用朗伯體反射實現方向光 186

13.3 添加點光 192

13.4 小結 199

13.5 練習 199

第14章 創建動態壁紙 200

14.1 實現動態壁紙的Service組件 200

14.2 權衡系統的其余部分 207

14.3 小結 209

14.4 練習 209

第15章 采取下一步行動 211

15.1 展望其他平臺 211

15.2 了解更高級的技術 213

15.3 與世界分享你的藝術視野 216

附錄A 投影背后的矩陣數學 217

附錄B 調試 223

參考文獻 228
序: