|
-- 會員 / 註冊 --
|
|
|
|
OpenGL ES 3.x游戲開發 上卷 ( 簡體 字) |
作者:吳亞峰 | 類別:1. -> 多媒體 -> OpenGL |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 45306 詢問書籍請說出此書號!【缺書】 NT售價: 445 元 |
出版日:10/1/2016 |
頁數:484 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115433497 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介: 本書共分17章,內容按照必知必會的OpenGL ES 3.x基礎知識、基于實現基本特效以及真實大型應用、游戲案例開發的順序進行詳細地講解。主要內容為:OpenGL ES 3.x的渲染管線介紹,OpenGL ES 3.x可編程渲染管線著色器的著色語言介紹,3D開發中投影、各種變換的原理與實現,介紹了OpenGL ES 3.x中光照的基本原理與實現、點法向量與面法向量的區別以及光照的每頂點計算與每片元計算的差別,介紹了紋理映射的基本原理與使用,介紹了使用OpenGL ES 3.0開發各種3D基本形狀的實現,包括圓柱、圓錐、圓環、螺旋管、幾何球以及貝塞爾曲線旋轉面等內容,講解了3D模型加載,介紹了混合和霧的基本原理與使用以及常用3D開發技巧,如標志板、天空盒、鏡像繪制等,介紹了OpenGL ES 3.0中經常使用的幾種剪裁與測試,包括剪裁測試、Alpha測試、模板測試以及任意剪裁平面等,講解了傳感器應用開發和Android 及iOS平臺下的OpenGL ES開發。通過兩大案例,如休閑類游戲3D可愛抓娃娃和3D樓盤展示系統把所學的知識應用起來,讓讀者盡快進入實戰角色。 本書適合OpenGL ES 3D應用開發的初學者、程序員、游戲開發者,也適合作為大專院校相關專業師生的學習用書以及培訓學校的教材。
|
目錄:第1章 Android概述 1 1.1 Android平臺的特點及未來的趨勢 1 1.1.1 全新理念帶來的體驗風暴 1 1.1.2 手機3D游戲和應用增長 迅速 2 1.2 搭建Android開發環境 2 1.2.1 JDK的安裝及環境變量的 配置 2 1.2.2 Android SDK的下載與配置 4 1.2.3 Eclipse集成開發環境的下載與配置 5 1.2.4 創建并啟動模擬器 8 1.3 Hello Android應用程序的開發 10 1.3.1 第一個Android應用程序 10 1.3.2 Android應用程序的項目 結構 13 1.3.3 Android應用程序的調試 14 1.3.4 實際設備的聯機調試 16 1.4 已有Android項目的導入和運行 16 1.4.1 項目的導入 16 1.4.2 應用程序的運行 17 1.5 Android應用程序運行的機制 18 1.5.1 應用程序的系統架構 18 1.5.2 應用程序框架 18 1.5.3 Android運行時 19 1.5.4 系統庫 19 1.5.5 底層Linux內核 20 1.6 小結 20 第2章 游戲開發相關的 Android基礎知識 21 2.1 游戲中的音效 21 2.1.1 游戲中的即時音效 21 2.1.2 即時音效的一個案例 22 2.1.3 背景音樂播放技術 24 2.1.4 簡易音樂播放器的實現 26 2.2 簡單數據的存儲—Preferences 29 2.2.1 Preferences簡介 29 2.2.2 Preferences實現訪問時間的 記錄 29 2.3 手機自帶數據庫—SQLite 30 2.3.1 初識SQLite 30 2.3.2 SQLite數據庫的基本操作 31 2.3.3 SQLite數據庫的簡單案例 32 2.3.4 使用ContentProvider組件 共享數據 34 2.3.5 使用ContentResolver獲取 分享數據 36 2.4 文件I/O 37 2.4.1 訪問SD卡中的文件 38 2.4.2 訪問手機中的文件夾 39 2.4.3 讀取assets文件夾下的內容 41 2.5 Socket網絡通信 42 2.5.1 Socket開發基本知識 42 2.5.2 服務器端 43 2.5.3 客戶端 44 2.6 藍牙通信 45 2.6.1 藍牙通信的基本知識 45 2.6.2 聊天案例概覽 46 2.6.3 聊天案例的開發過程 47 2.7 小結 57 第3章 初識OpenGL ES 3.x 58 3.1 OpenGL ES 3.x概述 58 3.1.1 OpenGL ES 3.x簡介 58 3.1.2 初識OpenGL ES 3.0應用 程序 61 3.1.3 OpenGL ES 3.1新特性簡介 68 3.2 著色器與渲染管線 68 3.2.1 OpenGL ES 2.0的渲染管線 68 3.2.2 OpenGL ES 3.0的渲染管線 74 3.2.3 OpenGL ES中立體物體的 構建 76 3.3 主流手機GPU大PK 77 3.3.1 手機GPU四大家族對比 77 3.3.2 主流GPU的性能參數比較 80 3.4 小結 81 第4章 著色語言Shading Language 82 4.1 著色語言概述 82 4.2 著色語言基礎 82 4.2.1 數據類型概述 83 4.2.2 數據類型的基本使用 87 4.2.3 運算符 89 4.2.4 構造函數 91 4.2.5 類型轉換 92 4.2.6 存儲限定符 93 4.2.7 插值限定符 98 4.2.8 一致塊 99 4.2.9 layout限定符 100 4.2.10 流程控制 102 4.2.11 函數的聲明與使用 104 4.2.12 片元著色器中浮點變量 精度的指定 105 4.2.13 程序的基本結構 106 4.3 特殊的內建變量 106 4.3.1 頂點著色器中的內建變量 106 4.3.2 片元著色器中的內建變量 107 4.3.3 內建常量 108 4.3.4 內建uniform變量 108 4.4 著色語言的內置函數 109 4.4.1 角度轉換與三角函數 109 4.4.2 指數函數 110 4.4.3 常見函數 111 4.4.4 幾何函數 114 4.4.5 矩陣函數 116 4.4.6 向量關系函數 116 4.4.7 紋理采樣函數 117 4.4.8 微分函數 120 4.4.9 浮點數的打包與解包函數 120 4.5 用invariant修飾符避免值變問題 121 4.6 預處理器 122 4.7 小結 123 第5章 必知必會的3D開發知識— 投影及各種變換 124 5.1 攝像機的設置 124 5.2 兩種投影方式 125 5.2.1 正交投影 125 5.2.2 透視投影 132 5.3 各種變換 134 5.3.1 基本變換的相關數學知識 134 5.3.2 平移變換 135 5.3.3 旋轉變換 138 5.3.4 縮放變換 139 5.3.5 基本變換的實質 140 5.4 所有變換的完整流程 141 5.5 繪制方式 144 5.5.1 各種繪制方式概覽 145 5.5.2 點與線段繪制方式 146 5.5.3 三角形條帶與扇面繪制方式 147 5.5.4 頂點法與索引法 151 5.5.5 layout限定符的使用 155 5.6 頂點常量屬性 156 5.6.1 頂點常量基本知識 156 5.6.2 一個簡單的案例 156 5.7 設置合理的視角 158 5.8 設置合理的透視參數 163 5.9 多邊形偏移 166 5.10 卷繞和背面剪裁 168 5.10.1 基本知識 168 5.10.2 一個簡單的案例 169 5.11 小結 170 第6章 光照 171 6.1 曲面物體的構建 171 6.1.1 球體構建的基本原理 171 6.1.2 案例效果概覽 172 6.1.3 開發步驟 172 6.2 基本光照效果 175 6.2.1 光照的基本模型 175 6.2.2 環境光 175 6.2.3 散射光 177 6.2.4 鏡面光 181 6.2.5 三種光照通道的合成 185 6.3 定位光與定向光 187 6.4 點法向量和面法向量 189 6.5 光照的每頂點計算與每片元計算 191 6.6 小結 193 第7章 紋理映射 194 7.1 初識紋理映射 194 7.1.1 基本原理 194 7.1.2 一個簡單的案例 195 7.1.3 色彩通道的靈活組合 199 7.2 紋理拉伸 201 7.2.1 三種拉伸方式概覽 201 7.2.2 不同拉伸方式的案例 203 7.3 紋理采樣 207 7.3.1 紋理采樣概述 207 7.3.2 最近點采樣 207 7.3.3 線性紋理采樣 208 7.3.4 MIN與MAG采樣 209 7.3.5 不同紋理采樣方式的案例 210 7.4 mipmap紋理技術 214 7.5 多重紋理與過程紋理 215 7.5.1 案例概覽 215 7.5.2 將2D紋理映射到球面上的 策略 216 7.5.3 案例的場景結構 217 7.5.4 開發過程 218 7.6 壓縮紋理的使用 224 7.7 點精靈 226 7.7.1 基本知識 226 7.7.2 一個簡單案例 227 7.8 3D紋理 229 7.9 2D紋理數組 233 7.10 采樣器配置對象的使用 237 7.11 小結 239 第8章 3D基本形狀的構建 240 8.1 圓柱體 240 8.1.1 頂點原始位置的生成 240 8.1.2 案例的開發 242 8.2 圓錐體 244 8.2.1 頂點原始位置的生成 244 8.2.2 案例的開發 246 8.3 圓環體 248 8.3.1 頂點原始位置的生成 248 8.3.2 案例的開發 249 8.4 螺旋管 250 8.4.1 頂點原始位置的生成 250 8.4.2 案例的開發 251 8.5 幾何球 252 8.5.1 頂點原始位置的生成 252 8.5.2 案例的開發 254 8.6 足球碳分子模型的搭建 259 8.6.1 搭建的基本原理 259 8.6.2 案例的開發 261 8.7 貝塞爾曲線及旋轉面 264 8.7.1 三維旋轉曲面的生成 264 8.7.2 貝塞爾曲線 265 8.7.3 Bezier曲線生成工具 266 8.7.4 印度古典建筑場景的開發 268 8.8 小結 269 第9章 更逼真的游戲場景——3D模型 加載 270 9.1 obj模型文件概述 270 9.1.1 obj文件的格式 270 9.1.2 用3ds Max設計3D模型 271 9.2 加載obj文件 272 9.2.1 加載僅有頂點坐標與面數據的obj文件 272 9.2.2 加載后自動計算面法向量 275 9.2.3 加載后自動計算平均法 向量 278 9.2.4 加載紋理坐標 280 9.2.5 加載頂點法向量 283 9.3 雙面光照 284 9.4 小結 286 第10章 獨特的場景渲染技術— 混合與霧 287 10.1 混合技術 287 10.1.1 混合基本知識 287 10.1.2 源因子和目標因子 288 10.1.3 簡單混合效果案例 290 10.1.4 ETC2壓縮紋理的使用 292 10.2 地月系云層效果的實現 295 10.3 霧 297 10.3.1 霧的原理與優勢 297 10.3.2 霧的簡單實現 298 10.4 小結 300 第11章 常用的3D開發技巧— 標志板、天空盒、鏡像繪制等 301 11.1 標志板 301 11.1.1 案例效果與基本原理 301 11.1.2 開發步驟 302 11.2 灰度圖地形 305 11.2.1 基本原理 306 11.2.2 普通灰度圖地形 306 11.2.3 過程紋理地形 309 11.2.4 MipMap地形 311 11.2.5 頂點著色器采樣紋理 地形 312 11.3 用粒子沉積算法構建地形 314 11.3.1 粒子沉積法的基本原理 314 11.3.2 地形設計器的使用 316 11.3.3 粒子沉積的核心算法類 318 11.4 天空盒與天空穹 319 11.4.1 天空盒 319 11.4.2 天空穹 321 11.4.3 天空盒與天空穹的使用 技巧 322 11.5 簡單鏡像效果 323 11.5.1 鏡像基本原理 323 11.5.2 基本效果案例 323 11.5.3 升級效果案例 326 11.6 動態文本輸出 327 11.6.1 案例效果與基本原理 327 11.6.2 具體開發步驟 327 11.7 非真實感繪制 329 11.7.1 基本原理與案例效果 329 11.7.2 具體開發步驟 331 11.8 描邊效果的實現 333 11.8.1 沿法線擠出輪廓 333 11.8.2 在視空間中擠出 335 11.9 小結 336 第12章 渲染出更加酷炫的3D場景— 幾種剪裁與測試 337 12.1 剪裁測試 337 12.1.1 基本原理與核心代碼 337 12.1.2 一個主次視角的簡單案例 337 12.2 Alpha測試 338 12.2.1 Alpha測試基本原理 339 12.2.2 一個橢圓窗口的案例 339 12.3 模板測試 341 12.3.1 基本原理 341 12.3.2 一個簡單的案例 343 12.4 任意剪裁平面 344 12.4.1 基本原理 344 12.4.2 茶壺被任意平面剪裁的 案例 345 12.5 小結 346 第13章 引人入勝的游戲特性— 傳感器應用開發 347 13.1 基本的開發流程 347 13.2 加速度傳感器 349 13.2.1 加速度傳感器簡介 349 13.2.2 案例的開發 350 13.3 磁場傳感器 351 13.3.1 磁場傳感器簡介 351 13.3.2 案例的開發 351 13.4 陀螺儀傳感器 352 13.4.1 陀螺儀傳感器簡介 352 13.4.2 案例的開發 353 13.5 光傳感器 354 13.5.1 光傳感器簡介 354 13.5.2 案例的開發 354 13.6 溫度傳感器 355 13.6.1 溫度傳感器簡介 355 13.6.2 案例的開發 355 13.7 接近傳感器 356 13.7.1 接近傳感器簡介 357 13.7.2 案例的開發 357 13.8 姿態傳感器 358 13.8.1 姿態傳感器簡介 358 13.8.2 案例的開發 360 13.9 加速度傳感器綜合案例 361 13.10 傳感器的坐標軸問題 363 13.11 小結 366 第14章 Android NDK及iOS 平臺下的 OpenGL ES開發 367 14.1 使用Android NDK進行OpenGL ES 開發 367 14.1.1 Android NDK開發環境的下 載及配置 367 14.1.2 Android NDK項目在Eclipse 中的配置 370 14.1.3 使用Android NDK開發簡單的 OpenGL ES 3.0程序 371 14.2 使用Android NDK開發山地地形 場景 378 14.2.1 案例效果及山地繪制類的 開發 379 14.2.2 NDK端渲染函數的開發 380 14.3 基于iOS平臺開發OpenGL ES 3.0 程序 382 14.3.1 案例運行效果及Xcode項目的 創建 382 14.3.2 案例的開發過程 385 14.4 基于iOS平臺的地月系場景 案例 390 14.4.1 案例的運行效果 391 14.4.2 案例的開發過程 391 14.5 小結 394 第15章 Web端3D游戲開發——WebGL 3D應用開發 395 15.1 WebGL概覽 395 15.1.1 WebGL簡介 395 15.1.2 WebGL效果展示 396 15.2 初識WebGL應用 396 15.2.1 WebGL應用案例部署運行 步驟簡介 397 15.2.2 簡單渲染3D模型案例的 開發 397 15.3 加入光照效果的WebGL案例 404 15.4 帶有紋理貼圖的WebGL案例 407 15.4.1 一個簡單的案例 408 15.4.2 WebGL版的地月系案例 411 15.5 小結 413 第16章 休閑類游戲—3D 可愛抓娃娃 414 16.1 游戲的背景及功能概述 414 16.1.1 背景描述 414 16.1.2 功能介紹 414 16.2 游戲的策劃及準備工作 417 16.2.1 游戲的策劃 417 16.2.2 手機平臺下游戲的準備 工作 418 16.3 游戲的架構 420 16.3.1 各個類的簡要介紹 420 16.3.2 游戲框架簡介 423 16.4 界面顯示類 424 16.4.1 顯示界面類 MySurfaceView 424 16.4.2 游戲界面類GameView 426 16.4.3 游戲主菜單界面類MainView 430 16.5 輔助工具類 431 16.5.1 輔助類 432 16.5.2 自定義管理器類 436 16.5.3 線程類 439 16.6 繪制相關類 441 16.6.1 3D模型繪制類的開發 441 16.6.2 BN2DObject繪制類的開發 442 16.7 粒子系統的開發 444 16.7.1 基本原理 444 16.7.2 開發步驟 444 16.8 本游戲中的著色器 447 16.9 游戲的優化及改進 449 16.10 小結 449 第17章 基于WebGL的3D 樓盤展示 系統 450 17.1 應用背景及功能概述 450 17.1.1 背景概述 450 17.1.2 功能介紹 450 17.2 功能預覽及架構 451 17.2.1 基于WebGL的3D樓盤展示 系統功能預覽 451 17.2.2 基于WebGL的3D樓盤展示 系統目錄結構 454 17.3 Web平臺下應用開發前的準備 工作 455 17.3.1 圖片資源的搜集 455 17.3.2 模型資源的采集 456 17.4 地圖設計器的開發 457 17.4.1 地圖設計器的開發設計 思路 457 17.4.2 地圖設計器的框架介紹 458 17.4.3 地圖設計器的開發步驟 458 17.5 公共函數介紹 461 17.5.1 工具函數文件GLUtil.js 461 17.5.2 obj加載文件 LoadObjUtil.js 463 17.5.3 著色器加載文件 LoadShaderUtil.js 464 17.5.4 3D物體繪制文件 ObjObject.js 465 17.5.5 矩陣操作函數文件 MatrixState.js 466 17.6 物體創建及繪制相關函數介紹 467 17.6.1 創建普通物體文件 loadObject.js 467 17.6.2 地面繪制文件 DrawLandMaps.js 468 17.6.3 普通按鈕繪制文件 DrawButton.js 470 17.7 各個功能模塊的實現 470 17.7.1 主界面mainView.html的 開發 470 17.7.2 樓房模型界面 houseModel.html的實現 475 17.7.3 戶體模型界面 roomType.html的開發 477 17.7.4 小區瀏覽界面 residentialGarden.html的 實現 478 17.8 應用中運用的著色器介紹 481 17.8.1 普通物體著色器 481 17.8.2 不帶光照物體著色器 483 17.8.3 天空盒著色器 483 17.9 應用的優化與改進 484 17.10 小結 484
|
序: |
|