OpenGL ES 3x遊戲開發 下卷
為什麼要寫這樣一套書
本書特點
内容導讀
本書作者
1緩沖區對象
1.1 頂點緩沖區
1.1.1 基本知識
1.1.2 一個簡單的案例
1.2 頂點數組對象
1.2.1 基本知識與案例效果
1.2.2 案例開發步驟
1.3 一緻緩沖區對象
1.3.1 基本知識與案例效果
1.3.2 案例開發步驟
1.4 映射緩沖區對象
1.4.1 基本知識與案例效果
1.4.2 案例開發步驟
1.5 其他緩沖區對象操作
1.5.1 複制緩沖區對象
1.5.2 從顔色緩沖區複制紋理資料
1.6 幀緩沖與渲染緩沖
1.6.1 幀緩沖與渲染緩沖對象
1.6.2 案例開發步驟
1.7 多重渲染目标
1.7.1 基本知識
1.7.2 一個簡單的案例
1.8 小結
2頂點着色器的妙用
2.1 飄揚的旗幟
2.1.1 基本原理
2.1.2 開發步驟
2.2 扭動的軟糖
2.2.1 基本原理
2.2.2 開發步驟
2.3 風吹椰林場景的開發
2.3.1 椰子樹随風搖擺的基本原理
2.3.2 開發步驟
2.4 展翅飛翔的雄鷹
2.4.1 基本原理
2.4.2 開發步驟
2.5 二維扭曲
2.5.1 基本原理
2.5.2 開發步驟
2.6 吹氣膨脹特效
2.6.1 特效基本原理
2.6.2 特效開發步驟
2.7 固定渲染管線與可程式設計渲染管線實作方案的對比
2.8 小結
3片元着色器的妙用
3.1 程式紋理技術
3.1.1 磚塊着色器
3.1.2 沙灘球着色器
3.2 數字圖像處理
3.2.1 卷積的基本知識
3.2.2 平滑過濾
3.2.3 邊緣檢測
3.2.4 銳化處理
3.2.5 浮雕效果
3.2.6 圖像漸變
3.2.7 卡通渲染特效
3.3 分形着色器
3.3.1 曼德布羅集簡介
3.3.2 曼德布羅集着色器的實作
3.3.3 将曼德布羅集紋理應用到實際物體上
3.3.4 茱莉亞集着色器的實作
3.4 3D紋理的妙用
3.4.1 噪聲函數的基礎知識
3.4.2 柏林噪聲函數生成工具
3.4.3 3D噪聲紋理木頭茶壺的開發
3.5 體積霧
3.5.1 基本原理
3.5.2 開發步驟
3.6 粒子系統火焰的開發
3.6.1 火焰的基本原理
3.6.2 普通版火焰
3.6.3 點精靈版火焰
3.6.4 變換回報版火焰
3.7 小結
4真實光學環境的模拟
4.1 反射環境模拟
4.1.1 案例效果與基本原理
4.1.2 反射環境開發步驟
4.2 折射環境模拟
4.2.1 案例效果與基本原理
4.2.2 開發步驟
4.3 色散效果的模拟
4.3.1 案例效果與基本原理
4.3.2 開發步驟
4.4 菲涅爾效果的模拟
4.4.1 案例效果與基本原理
4.4.2 菲涅爾效果開發步驟
4.5 凹凸映射
4.5.1 案例效果與基本原理
4.5.2 法向量紋理圖的生成
4.5.3 切向量的計算
4.5.4 案例的開發
4.5.5 使用3ds Max制作法向量紋理圖
4.6 高真實感地形
4.6.1 基本思路
4.6.2 一個簡單的案例
4.7 鏡頭光暈
4.7.1 基本原理
4.7.2 一個簡單的案例
4.8 小結
5陰影及進階光照
5.1 投影貼圖
5.1.1 案例效果與基本原理
5.1.2 開發步驟
5.2 陰影的重要性
5.3 平面陰影
5.3.1 案例效果與基本原理
5.3.2 開發步驟
5.4 陰影映射
5.4.1 陰影映射案例效果與基本原理
5.4.2 距離紋理圖的生成
5.4.3 陰影場景的繪制
5.5 陰影貼圖
5.5.1 案例效果與基本原理
5.5.2 開發步驟
5.6 靜态光照貼圖
5.6.1 案例效果與基本原理
5.6.2 使用3ds Max制作靜态光照貼圖
5.6.3 案例的開發
5.7 聚光燈進階光源
5.7.1 案例效果與基本原理
5.7.2 案例的開發
5.8 半球光照
5.8.1 案例效果與基本原理
5.8.2 案例的開發
5.9 光線跟蹤
5.9.1 光線跟蹤案例效果與基本原理
5.9.2 光線跟蹤開發步驟
5.10 進階鏡像技術
5.10.1 案例效果與基本原理
5.10.2 開發步驟
5.11 高真實感水面倒影
5.11.1 案例效果與基本原理
5.11.2 開發步驟
5.12 運動模糊
5.12.1 普通運動模糊
5.12.2 進階運動模糊
5.13 小結
6遊戲開發中的實體學
6.1 碰撞檢測基本技術
6.1.1 AABB包圍盒的基本原理
6.1.2 AABB包圍盒的計算
6.1.3 AABB包圍盒的碰撞檢測
6.1.4 一個AABB包圍盒的案例
6.1.5 旋轉後的AABB包圍盒
6.1.6 AABB包圍盒的使用要點
6.1.7 OBB包圍盒
6.2 穿透效應
6.2.1 案例的運作效果與基本原理
6.2.2 具體開發步驟
6.3 粒子系統
6.3.1 案例運作效果與基本原理
6.3.2 CPU版案例的開發
6.3.3 GPU版案例開發步驟
6.4 彈簧質點模型模拟旗幟
6.4.1 彈簧質點模型基本原理
6.4.2 彈簧質點模型案例的運作效果及開發步驟
6.5 彈簧質點模型模拟球網
6.5.1 彈簧質點模型的基本原理
6.5.2 彈簧質點模型的案例的運作效果及開發步驟
6.6 小結
73D實體引擎一——JBullet
7.1 實體引擎很重要
7.1.1 什麼是實體引擎
7.1.2 常見的實體引擎
7.2 JBullet實體引擎概覽
7.2.1 基本的實體學概念
7.2.2 JBullet中常用類的介紹
7.3 箱子互相碰撞的案例
7.3.1 案例運作效果及準備工作
7.3.2 案例的基本架構結構
7.3.3 常量類——Constant
7.3.4 3D場景渲染類——MySurfaceView
7.3.5 水準地面——TexFloor類
7.3.6 箱子——TexCube類
7.4 複合碰撞形狀的使用
7.4.1 案例運作效果
7.4.2 立方體圓柱複合形狀——CubeCylinder類
7.5 凹凸地形的案例
7.5.1 案例運作效果
7.5.2 地形類——LandForm
7.6 任意形狀物體的碰撞
7.6.1 案例運作效果
7.6.2 加載物體類——LoadedObjectVertexNormal
7.6.3 加載物體剛體類——LoadRigidBody
7.7 鉸鍊關節
7.7.1 鉸鍊關節的基本知識
7.7.2 鉸鍊關節案例的運作效果
7.7.3 鉸鍊關節旋轉角速度的計算
7.7.4 3D界面渲染類——MySurfaceView
7.8 滑動關節
7.8.1 滑動關節的基本知識
7.8.2 案例效果圖
7.8.3 3D界面渲染類——MySurfaceView
7.9 六自由度關節
7.9.1 六自由度關節的基本知識
7.9.2 六自由度關節案例的運作效果
7.9.3 人偶類——Doll
7.9.4 拾取時采用的點對點關節
7.10 交通工具
7.10.1 交通工具開發要點
7.10.2 交通工具案例的運作效果
7.10.3 3D場景渲染類——MySurfaceView
7.10.4 汽車類——Car
7.10.5 汽車繪制類——VehicleDraw
7.11 小結
83D實體引擎二——Bullet
8.1 Bullet中的常用類和結構體
8.1.1 btScalar類——被封裝的浮點類
8.1.2 btVector3類——三維向量類
8.1.3 btTransform類——變換類
8.1.4 btRigidBody類——剛體類
8.1.5 btDynamicsWorld類——實體世界類
8.1.6 btDiscreteDynamicsWorld類——離散實體世界類
8.1.7 btSoftRigidDynamicsWorld類——支援模拟軟體的實體世界類
8.1.8 btCollisionShape類——碰撞形狀類
8.1.9 btStaticPlaneShape類——靜态平面形狀
8.1.10 btSphereShape類——球體形狀類
8.1.11 btBoxShape類——長方體盒碰撞形狀類
8.1.12 btCylinderShape類——圓柱形狀類
8.1.13 btCapsuleShape類——膠囊形狀類
8.1.14 btConeShape類——圓錐形狀類
8.1.15 btCompoundShape類——複合碰撞形狀類
8.2 簡單的實體場景
8.2.1 案例運作效果
8.2.2 案例的基本架構結構
8.2.3 3D場景渲染類——GL2JNIView類
8.2.4 主要制類——HelloBulletActivity類
8.2.5 本地方法聲明及動态庫加載類——JNIPort類
8.2.6 封裝的物體類——TexBody類
8.2.7 矩形繪制類——TextrueRect類
8.2.8 長方體物體類——TexCuboid類
8.2.9 水準地面類——TexPlane類
8.2.10 初始化及渲染函數檔案——main.cpp
8.3 各式各樣的物體下落
8.3.1 案例運作效果
8.3.2 圓錐物體類——TexCone類
8.3.3 球物體類——TexBall類
8.3.4 膠囊物體類——TexCapsule類
8.3.5 圓柱物體類——TexCylinderShape類
8.3.6 初始化及渲染函數檔案——main.cpp
8.4 旋轉的陀螺
8.4.1 案例運作效果
8.4.2 陀螺物體類——MyCompoundShape類
8.4.3 初始化及渲染函數檔案——main.cpp
8.5 消失的木塊
8.5.1 案例運作效果
8.5.2 初始化及渲染函數檔案——main.cpp
8.6 物體碰撞下落
8.6.1 案例運作效果
8.6.2 初始化及渲染函數檔案——main.cpp
8.7 關節
8.7.1 關節的父類——btTypedConstraint類
8.7.2 鉸鍊關節——btHingeConstraint類
8.7.3 鉸鍊關節的案例——球落門開
8.7.4 齒輪關節——btGearConstraint類
8.7.5 齒輪關節的案例——轉動的齒輪
8.7.6 點對點關節——btPoint2PointConstraint類
8.7.7 點對點關節的案例——懸挂的物體
8.7.8 滑動關節——btSliderConstraint類
8.7.9 滑動關節的案例——六個方向的物體滑動
8.7.10 六自由度關節——btGeneric6DofConstraint類
8.7.11 六自由度關節的案例——掉落的蜘蛛
8.8 三角形網格形狀類
8.8.1 三角形索引數組類——btTriangleIndexVertexArray類
8.8.2 層次包圍結構三角形網格形狀類——btBvhTriangleMeshShape類
8.8.3 層次包圍結構三角形網格形狀類的案例——波動的水紋
8.9 交通工具類
8.9.1 交通工具類——btRaycastVehicle類
8.9.2 交通工具的案例——移動的小車
8.10 固定三角形網格形狀類
8.10.1 固定三角形網格形狀類——btGImpactMeshShape類
8.10.2 固定形狀物體案例
8.11 軟體
8.11.1 軟體幫助類——btSoftBodyHelps類
8.11.2 軟布案例
8.11.3 三角形網格軟體案例
8.11.4 繩索軟體案例
8.12 光線投射回調結構體
8.12.1 光線投射回調結構體ClosestRayResultCallback
8.12.2 光線投射的案例——旋轉光線
8.13 小結
9骨骼動畫
9.1 自己開發骨骼動畫
9.1.1 骨骼動畫的基本原理
9.1.2 開發步驟
9.1.3 機器人模型在地面上運動時的問題
9.2 ms3d檔案的加載
9.2.1 ms3d檔案的格式
9.2.2 将3ds Max動畫檔案轉換為ms3d檔案
9.2.3 Java語言加載ms3d檔案案例的開發
9.2.4 C++語言加載ms3d檔案案例的開發
9.3 自定義格式骨骼動畫的加載
9.3.1 bnggdh檔案的格式
9.3.2 Bnggdh類
9.3.3 加載bnggdh檔案的案例
9.4 小結
10必知必會的開發技術——遊戲開發小貼士
10.1 3D拾取技術
10.1.1 3D拾取案例效果與基本原理
10.1.2 開發步驟
10.2 多點觸控
10.2.1 多點觸控案例效果與基本原理
10.2.2 開發步驟
10.3 多鍵監聽
10.3.1 案例效果與基本原理
10.3.2 開發步驟
10.4 小結
11讓應用運作更流暢——性能優化
11.1 着色器的優化
11.1.1 計算量與計算頻率相關的問題
11.1.2 其他需要注意的問題
11.2 紋理圖的優化
11.3 3D圖形繪制的優化
11.3.1 CPU階段的優化
11.3.2 幾何階段的優化
11.3.3 光栅化階段的優化
11.3.4 使用幀緩沖區對象時的性能問題
11.3.5 盡量減少狀态的變化
11.4 圖元重新開機
11.4.1 基本原理
11.4.2 一個簡單的案例
11.5 幾何體執行個體渲染
11.5.1 基本原理
11.5.2 一個簡單的案例
11.5.3 基于執行個體渲染的海量草地
11.6 着色器程式的外部加載
11.7 計算着色器的使用
11.7.1 基本知識
11.7.2 動态法向量光照水面案例
11.8 小結
12雜項
12.1 遮擋查詢
12.1.1 相關方法
12.1.2 案例開發步驟
12.2 增強現實基礎
12.2.1 基本知識與案例效果
12.2.2 一個簡單的案例
12.3 儲存螢幕圖像
12.4 讀取Android系統的GPU參數
12.5 多重采樣抗鋸齒
12.5.1 基本知識與案例效果
12.5.2 一個簡單的案例
12.6 小結
13Android NDK體育競技遊戲——火力籃球
13.1 遊戲背景及功能簡述
13.1.1 背景概述
13.1.2 功能介紹
13.2 遊戲的策劃及準備工作
13.2.1 遊戲的策劃
13.2.2 Android平台下遊戲開發的準備工作
13.3 遊戲的架構
13.3.1 各個類簡要介紹
13.3.2 遊戲的架構簡介
13.4 遊戲公共類
13.4.1 遊戲入口類——BasketBulletActivity
13.4.2 場景渲染類——GL2JNIView
13.4.3 本地方法聲明及動态庫加載類——JNIPort
13.4.4 現實本地方法的相關檔案——jni_code.c
13.4.5 現實本地方法的相關檔案——main.cpp
13.5 輔助界面相關類
13.5.1 着色器管理類——ShaderManager
13.5.2 着色器腳本的開發
13.5.3 資料庫工具類——SQLiteUtil
13.5.4 紋理矩形類——TextureRect
13.5.5 遊戲資源加載界面類——LoadingView
13.5.6 菜單界面類——MenuView
13.5.7 記錄界面類——RecordView
13.6 遊戲界面相關類
13.6.1 遊戲界面類——GameView
13.6.2 牆面剛體封裝類——TexCuboid
13.6.3 籃球剛體封裝類——TexBall
13.6.4 任何形狀類——AnyShapeByVectices
13.6.5 任何形狀剛體封裝類——TexTriangleMesh
13.6.6 任何形狀軟體封裝類——SoftObj
13.7 遊戲的優化及改進
14iOS休閑類遊戲——方塊翻轉
14.1 遊戲背景及功能概述
14.1.1 遊戲背景概述
14.1.2 遊戲功能介紹
14.2 遊戲的策劃及準備工作
14.2.1 遊戲的策劃
14.2.2 手機平台下遊戲的準備工作
14.3 遊戲的架構
14.3.1 各個類簡要介紹
14.3.2 遊戲架構簡介
14.4 界面顯示類
14.4.1 GLView類
14.4.2 顯示界面類RenderingEngine2
14.4.3 遊戲界面類GameView
14.4.4 幫助界面類HelpView
14.5 輔助工具類
14.5.1 常量類Constant
14.5.2 計算交點坐标輔助類IntersectantUtil
14.6 繪制相關類
14.6.1 3D模型繪制類的開發
14.6.2 2D物體繪制類的開發
14.7 遊戲的優化及改進
14.8 小結
思維導圖
防止部落格圖床圖檔失效,防止圖檔源站外鍊:
http://www.processon.com/chart_image/5e5b2e54e4b0cb56dab112b6.png)
思維導圖線上編輯連結:
https://www.processon.com/view/5e5b2e54e4b0cb56dab112b3