內容介紹
《Android 4遊戲高級編程(第2版)》將幫助你充分利用最新的Android SDK 4.0的強大功能,構建複雜、令人著迷的遊戲套用。最重要的是,本書向你展示了如何將類似Doom、Quake Ⅰ和Ⅱ這樣的原生PC遊戲以最少的精力移植到最新的Android平台。將本書作為你值得信賴的指南,你將會發現一些能極大提高Android遊戲套用開發技能的方式。通過創建渲染二十面體的Android項目,你會看到如何使用OpenGL ES 2.0產生高效的圖形。同時你還將學習如何使用更好的字型、新的用戶界面和體驗(UI/UX)API、多點觸摸功能、多任務,並得到更快的性能。
只需要跟隨每一章可操作的原始碼和來自真實世界的示例,你將善於:
? 結合Java優雅的面向對象功能和C的原始動力。
? 掌握一系列專業和先進的技術,比如混合使用OpenGL、OpenGL ES和JNI的3D圖形技術。
? 移植和完善2D射擊遊戲,建立類似Quake的3D射擊遊戲。
? 如果想迅速提升自己開發Android高端遊戲的技能,本書將是你的最佳選擇。
作者介紹
Vladimir Silva 出生於厄瓜多基多。他在1994 年獲得厄瓜多軍隊理工學院系統分析師學位。同年,他作為交換生來到美國,在田納西州州立大學攻讀計算機科學碩士學位。畢業後,他加入了IBM WebAhead 實驗室。他的興趣包括格線計算、神經網路和人工智慧。他還擁有許多IT 認證,包括Oracle 認證專家(Oracle Certified Professional,OCP)、微軟認證解決方案開發專家(Microsoft Certified Solution Developer,MCSD)和微軟認證專家(Microsoft Certified Professional,MCP)。他在IBM developerWorks 社區編寫了大量關於安全和格線計算方面的技術文章。作品目錄
目 錄第1 章 歡迎來到Android 世界.............1
1.1 配置開發機...................................1
1.2 下載並安裝SDK..........................2
1.3 配置Eclipse ..................................2
1.4 安裝原生開發工具包...................5
1.4.1 安裝NDK .................................. 6
1.4.2 安裝Cygwin .............................. 6
1.5 創建Android 模擬器....................6
1.6 配置真實設備...............................9
1.7 本章小結.....................................10
第2 章 針對手機或平板電腦的
遊戲技巧................................. 11
2.1 在Android 中編譯原生代碼...... 11
2.1.1 創建支持原生代碼的Android
項目..........................................13
2.1.2 應用程式的體系結構..............14
2.2 編譯共享庫.................................25
2.3 調試模擬器.................................26
2.4 Java 對C/C++事件處理的
封裝.............................................27
2.4.1 獨立處理音頻..........................27
2.4.2 級聯視頻事件..........................32
2.5 多點觸摸.....................................37
2.5.1 MultiTouchGesture...................37
2.5.2 MultiTouchScreen ....................39
2.5.3 TestActivity ..............................41
2.6 藍牙控制器(Zeemote) ................42
2.7 本章小結.....................................46
第3 章 更多OpenGL 與JNI
遊戲技巧................................ 49
3.1 移動設備的動力.........................50
3.2 Java 方式的OpenGL..................51
3.2.1 創建項目..................................51
3.2.2 Java 版本的主Activity ............54
3.2.3 surface 視圖..............................55
3.2.4 GL 執行緒....................................58
3.2.5 立方體渲染器..........................61
3.2.6 Cube 類.....................................64
3.3 原生方式的OpenGL ..................66
3.3.1 主Activity ................................68
3.3.2 原生接口類..............................70
3.3.3 修改原示例..............................71
3.3.4 原生立方體渲染器..................72
3.3.5 原生立方體類..........................78
3.3.6 編譯和運行示例......................79
3.4 通過OpenGL ES 混合模式
縮放視頻緩衝區.........................82
3.4.1 為什麼使用混合縮放..............83
3.4.2 初始化surface..........................85
3.4.3 繪製到紋理..............................86
3.4.4 當圖像的尺寸不是2 的冪時
會發生什麼..............................89
3.5 本章小結.....................................94
第4 章 OpenGL ES 2.0 的高效圖形... 95
4.1 OpenGL ES 2.0 與Android ........95
4.1.1 著色器......................................96
4.1.2 GLSL ........................................96
4.1.3 剖析著色器..............................98
Android 4 遊戲高級編程(第2 版)
XVI
4.2 在Android 中調用
OpenGL ES 2.0 .........................101
4.3 二十面體項目...........................102
4.3.1 定義形狀............................... 102
4.3.2 處理項目............................... 104
4.3.3 原生二十面體........................112
4.4 添加“滑動”和多點觸摸的“捏”
縮放功能................................... 119
4.5 編譯與運行...............................122
4.6 本章小節...................................123
第5 章 3D 射擊遊戲:Doom............125
5.1 組合使用Java/C,功能
無極限.......................................126
5.2 將Doom 移植到移動設備.......127
5.3 Doom 遊戲的體系結構............129
5.4 Java 層的主Activity.................130
5.4.1 創建處理程式....................... 131
5.4.2 遊戲布局............................... 132
5.4.3 選單和選擇項處理程式....... 134
5.4.4 按鍵和觸摸事件處理程式... 135
5.4.5 原生回調處理程式............... 137
5.4.6 導航控制項............................... 140
5.5 獨立處理音頻格式...................142
5.6 原生接口類...............................143
5.6.1 回調監聽器........................... 143
5.6.2 原生方法............................... 144
5.6.3 C 到Java 的回調.................. 144
5.7 原生層.......................................147
5.7.1 原生方法的實現................... 147
5.7.2 對原始遊戲進行修改........... 159
5.8 使用NDK 編譯Doom .............165
5.9 在模擬器中測試Doom............167
5.10 本章小結.................................169
第6 章 3D 射擊遊戲:Quake...........171
6.1 一些關於Quake 的術語...........171
6.2 代碼重用的威力:Quake 中的
新代碼少於500 行...................172
6.3 軟體渲染是合理解決方案嗎...174
6.4 Quake 的Android 架構............179
6.4.1 Java OpenGL 渲染器架構.... 180
6.4.2 獨立處理音頻格式............... 185
6.4.3 處理鍵盤事件....................... 187
6.4.4 處理觸摸事件....................... 189
6.4.5 遊戲的啟動Activity ............. 192
6.5 原生Quake 引擎必需的改動....193
6.5.1 視頻處理程式的改動........... 194
6.5.2 處理X 軸旋轉(pitch)和Y 軸
旋轉(yaw).............................. 196
6.5.3 處理前進和橫向運動........... 197
6.5.4 音頻處理程式的改動........... 197
6.5.5 修復遊戲循環....................... 200
6.6 在設備上運行Quake................202
6.7 本章小結...................................208
第7 章 3D 射擊遊戲:QuakeⅡ....... 209
7.1 代碼回顧...................................209
7.2 逃離Java 堆的束縛..................210
7.3 讓QuakeⅡ引擎在Android 中
工作...........................................211
7.3.1 代碼的可重用性.................. 211
7.3.2 當發生致命錯誤時如何
處理...................................... 221
7.3.3 OpenGL 立即模式問題....... 223
7.3.4 視頻處理程式...................... 224
7.4 使用NDK 編譯QuakeⅡ .........228
7.5 在設備或模擬器中運行遊戲...231
7.6 QuakeⅡ在多種設備中的性能
表現...........................................234
7.7 本章小結...................................234
附錄 部署和編譯技巧....................... 237