目 錄
第1章 入門 1
1.1 軟件需求 1
1.1.1 針對iOS開發人員 1
1.1.2 針對Android開發人員 2
1.2 下載本書的SDK 3
1.3 導入項目 4
1.3.1 針對iOS開發人員 5
1.3.2 針對Android開發人員 5
1.4 模闆 6
1.5 小結 7
第2章 設置圖形投影 9
2.1 三種基本的投影類型 9
2.2 正射2D投影 11
2.2.1 程序和項目初始化 12
2.2.2 頂點和片段著色器 14
2.2.3 鏈接著色器程序 16
2.2.4 繪圖代碼 18
2.3 正交投影 23
2.4 透視投影 26
2.5 小結 27
第3章 處理復雜幾何圖形 29
3.1 Wavefront文件格式 29
3.1.1 cube.obj 30
3.1.2 cube.mtl 31
3.2 準備OBJ瀏覽器代碼 31
3.3 加載OBJ 32
3.4 構建著色器 35
3.4.1 頂點著色器 35
3.4.2 片段著色器 36
3.4.3 頂點緩衝區對象 36
3.4.4 存儲頂點數據 36
3.4.5 構建頂點數據數組(VBO) 38
3.4.6 構建元素數組VBO 39
3.5 構建VAO 40
3.6 渲染Momo 42
3.7 處理Touche事件 44
3.8 逐頂點光照 45
3.8.1 頂點著色器的光照計算 46
3.8.2 修改片段著色器 47
3.8.3 更多uniform變量 48
3.9 對Momo進行美化 49
3.9.1 加載紋理 49
3.9.2 調整頂點數據 50
3.9.3 嚮頂點著色器添加UV
支持 52
3.9.4 嚮片段著色器添加紋理支持 52
3.9.5 綁定紋理 53
3.10 小結 54
第4章 構建場景 55
4.1 處理多個對象 55
4.2 代碼結構 56
4.3 加載和繪製場景 57
4.4 著色器代碼 61
4.5 不同的對象類型 62
4.6 繪製順序 62
4.7 修復場景 63
4.7.1 Uber Shader 63
4.7.2 使用Uber Shader 64
4.7.3 渲染循環對象分類 67
4.7.4 雙麵 69
4.8 逐像素光照 71
4.8.1 使頂點著色器更加豐富 71
4.8.2 獲取使用瞭更多Uber的片段著色器 72
4.8.3 封裝實現代碼 74
4.9 小結 77
第5章 優化 79
5.1 基本應用程序 79
5.2 從三角形到三角形帶 80
5.3 構建三角形帶 81
5.4 紋理優化 82
5.5 添加16位紋理轉換 83
5.6 PVR紋理壓縮 84
5.7 仿造細節 85
5.7.1 凸凹貼圖的實現 85
5.7.2 精度限定符優化 86
5.7.3 法綫貼圖光照計算 88
5.7.4 添加反射 90
5.8 幾何圖形和著色器LOD 91
5.9 紋理地圖集 91
5.10 在軟件中管理狀態 92
5.11 自動著色器優化 93
5.12 小結 94
第6章 實時物理 95
6.1 物理對象類型 95
6.2 物理形狀 96
6.3 使用Bullet 97
6.4 Hello Physics 97
6.5 碰撞迴調、觸發器和接觸點 102
6.5.1 Contact-Added迴調 103
6.5.2 Near迴調 105
6.5.3 接觸點 106
6.6 2D物理 107
6.6.1 更多形狀! 108
6.6.2 構建物理對象 111
6.6.3 攝像頭跟蹤 112
6.6.4 用戶交互 114
6.6.5 遊戲邏輯 114
6.7 3D物理 118
6.7.1 Bullet文件格式 118
6.7.2 3D彈珠遊戲 119
6.8 小結 125
第7章 攝像頭 127
7.1 一觸即發 128
7.2 攝像頭視錐 130
7.2.1 視錐構建方式 131
7.2.2 視錐剪切的實現 132
7.2.3 更多剪切函數 133
7.3 攝像頭飛行模式 134
7.4 帶有碰撞檢測的第一人稱
攝像頭 139
7.5 3D攝像頭跟蹤 141
7.6 帶有碰撞的第三人稱攝像頭 143
7.7 小結 148
第8章 路徑發現 149
8.1 Recast和Detour 149
8.2 導航 150
8.3 創建導航網格 151
8.4 3D物理拾取 153
8.5 玩傢的自動驅動 157
8.6 使路徑點可見 159
8.7 遊戲“如果能就抓住我!” 161
8.8 瞭解你的敵人 164
8.9 遊戲狀態邏輯 165
8.10 小結 168
第9章 音頻及其他極佳的遊戲編程資料 171
9.1 OpenAL 172
9.2 OGG Vorbis 173
9.3 Hello World OpenAL樣式 173
9.4 初始化OpenAL 174
9.5 播放靜態內存聲音 174
9.6 定位聲源 176
9.7 鋼琴遊戲 177
9.7.1 加載靜態的流式聲音 178
9.7.2 顔色提取 182
9.7.3 鋼琴遊戲邏輯 185
9.7.4 最後的調整 188
9.8 滾球遊戲 190
9.8.1 GFX著色器 191
9.8.2 鏈接定位聲源 192
9.8.3 加速計驅動攝像頭 196
9.8.4 廉價的FX 199
9.8.5 遊戲邏輯和調整 200
9.9 小結 206
第10章 高級光照 207
10.1 燈的類型 207
10.2 使用光源 208
10.2.1 定嚮燈著色器 211
10.2.2 使用Struct作為Uniform 214
10.3 點燈 217
10.3.1 點光源著色器代碼 218
10.3.2 光的衰減 221
10.3.3 帶有衰減代碼的點光源 222
10.3.4 衰減Uniform變量 223
10.3.5 球體點光源 224
10.3.6 調整點光源代碼 225
10.3.7 聚光燈 227
10.3.8 聚光燈著色器代碼 229
10.4 多個光源 231
10.5 使著色器程序動態化 234
10.6 小結 235
第11章 高級FX 237
11.1 渲染到紋理 238
11.2 後處理效果 238
11.2.1 第一渲染通道 241
11.2.2 第二渲染通道 242
11.2.3 全屏通道和模糊著色器 243
11.3 投影紋理 246
11.4 投影著色器 249
11.5 投影實時陰影 250
11.6 使用深度紋理投射陰影 254
11.7 關於幀緩衝對象的其他內容 255
11.8 粒子 255
11.9 小結 257
第12章 骨骼動畫 259
12.1 傳統的動畫係統與最新的動畫係統 259
12.2 MD5文件格式 261
12.3 加載MD5網格 261
12.4 對網格進行動畫處理 264
12.4.1 LERP 266
12.4.2 SLERP 266
12.5 混閤動畫 267
12.6 相加混閤 269
12.7 小結 271
· · · · · · (
收起)