本書贊譽
譯者序
序
前言
緻謝
第1章 OpenGL ES 3.0簡介 1
1.1 OpenGL ES 3.0 2
1.1.1 頂點著色器 3
1.1.2 圖元裝配 5
1.1.3 光柵化 5
1.1.4 片段著色器 6
1.1.5 逐片段操作 7
1.2 OpenGL ES 3.0新功能 8
1.2.1 紋理 8
1.2.2 著色器 10
1.2.3 幾何形狀 11
1.2.4 緩衝區對象 11
1.2.5 幀緩衝區 12
1.3 OpenGL ES 3.0和嚮後兼容性 12
1.4 EGL 13
1.4.1 使用OpenGL ES 3.0編程 14
1.4.2 庫和包含文件 14
1.5 EGL命令語法 14
1.6 OpenGL ES命令語法 15
1.7 錯誤處理 16
1.8 基本狀態管理 16
1.9 延伸閱讀 17
第2章 你好,三角形:一個OpenGL ES 3.0示例 18
2.1 代碼框架 18
2.2 示例下載位置 19
2.3 “你好,三角形”(Hello Triangle)示例 19
2.4 使用OpenGL ES 3.0框架 23
2.5 創建簡單的頂點和片段著色器 24
2.6 編譯和加載著色器 25
2.7 創建一個程序對象並鏈接著色器 26
2.8 設置視口和清除顔色緩衝區 27
2.9 加載幾何形狀和繪製圖元 28
2.10 顯示後颱緩衝區 29
2.11 小結 29
第3章 EGL簡介 30
3.1 與窗口係統通信 30
3.2 檢查錯誤 31
3.3 初始化EGL 32
3.4 確定可用錶麵配置 32
3.5 查詢EGLConfig屬性 33
3.6 讓EGL選擇配置 35
3.7 創建屏幕上的渲染區域:EGL窗口 37
3.8 創建屏幕外渲染區域:EGL Pbuffer 39
3.9 創建一個渲染上下文 42
3.10 指定某個EGLContext為當前上下文 43
3.11 結閤所有EGL知識 44
3.12 同步渲染 46
3.13 小結 46
第4章 著色器和程序 47
4.1 著色器和程序 47
4.1.1 創建和編譯一個著色器 48
4.1.2 創建和鏈接程序 51
4.2 統一變量和屬性 54
4.2.1 獲取和設置統一變量 55
4.2.2 統一變量緩衝區對象 60
4.2.3 獲取和設置屬性 64
4.3 著色器編譯器 64
4.4 程序二進製碼 65
4.5 小結 66
第5章 OpenGL ES著色語言 67
5.1 OpenGL ES著色語言基礎知識 67
5.2 著色器版本規範 68
5.3 變量和變量類型 68
5.4 變量構造器 69
5.5 嚮量和矩陣分量 70
5.6 常量 71
5.7 結構 71
5.8 數組 72
5.9 運算符 72
5.10 函數 73
5.11 內建函數 74
5.12 控製流語句 74
5.13 統一變量 75
5.14 統一變量塊 75
5.15 頂點和片段著色器輸入/輸齣 77
5.16 插值限定符 79
5.17 預處理器和指令 80
5.18 統一變量和插值器打包 81
5.19 精度限定符 82
5.20 不變性 83
5.21 小結 85
第6章 頂點屬性、頂點數組和緩衝區對象 87
6.1 指定頂點屬性數據 87
6.1.1 常量頂點屬性 88
6.1.2 頂點數組 88
6.2 在頂點著色器中聲明頂點屬性變量 95
6.3 頂點緩衝區對象 98
6.4 頂點數組對象 106
6.5 映射緩衝區對象 109
6.6 復製緩衝區對象 112
6.7 小結 113
第7章 圖元裝配和光柵化 114
7.1 圖元 114
7.1.1 三角形 114
7.1.2 直綫 115
7.1.3 點精靈 116
7.2 繪製圖元 117
7.2.1 圖元重啓 119
7.2.2 驅動頂點 119
7.2.3 幾何形狀實例化 120
7.2.4 性能提示 122
7.3 圖元裝配 124
7.3.1 坐標係統 124
7.3.2 透視分割 126
7.3.3 視口變換 126
7.4 光柵化 127
7.4.1 剔除 127
7.4.2 多邊形偏移 128
7.5 遮擋查詢 130
7.6 小結 131
第8章 頂點著色器 132
8.1 頂點著色器概述 133
8.1.1 頂點著色器內建變量 133
8.1.2 精度限定符 135
8.1.3 頂點著色器中的統一變量限製數量 136
8.2 頂點著色器示例 138
8.2.1 矩陣變換 139
8.2.2 頂點著色器中的照明 141
8.3 生成紋理坐標 145
8.4 頂點濛皮 146
8.5 變換反饋 150
8.6 頂點紋理 151
8.7 將OpenGL ES 1.1頂點管綫作為ES 3.0頂點著色器 152
8.8 小結 159
第9章 紋理 160
9.1 紋理基礎 160
9.1.1 2D紋理 161
9.1.2 立方圖紋理 161
9.1.3 3D紋理 162
9.1.4 2D紋理數組 163
9.1.5 紋理對象和紋理的加載 163
9.1.6 紋理過濾和mip貼圖 167
9.1.7 自動mip貼圖生成 171
9.1.8 紋理坐標包裝 172
9.1.9 紋理調配 173
9.1.10 紋理細節級彆 173
9.1.11 深度紋理對比(百分比漸進過濾) 174
9.1.12 紋理格式 174
9.1.13 在著色器中使用紋理 180
9.1.14 使用立方圖紋理的示例 182
9.1.15 加載3D紋理和2D紋理數組 184
9.2 壓縮紋理 186
9.3 紋理子圖像規範 188
9.4 從顔色緩衝區復製紋理數據 191
9.5 采樣器對象 193
9.6 不可變紋理 195
9.7 像素解包緩衝區對象 196
9.8 小結 197
第10章 片段著色器 198
10.1 固定功能片段著色器 199
10.2 片段著色器概述 200
10.2.1 內建特殊變量 201
10.2.2 內建常量 202
10.2.3 精度限定符 202
10.3 用著色器實現固定功能技術 203
10.3.1 多重紋理 203
10.3.2 霧化 204
10.3.3 Alpha測試(使用Discard) 207
10.3.4 用戶裁剪平麵 208
10.4 小結 209
第11章 片段操作 210
11.1 緩衝區 211
11.1.1 請求更多緩衝區 211
11.1.2 清除緩衝區 212
11.1.3 用掩碼控製幀緩衝區的寫入 213
11.2 片段測試和操作 214
11.2.1 使用剪裁測試 214
11.2.2 模闆緩衝區測試 215
11.3 混閤 220
11.4 抖動 221
11.5 多重采樣抗鋸齒 222
11.6 在幀緩衝區讀取和寫入像素 223
11.7 多重渲染目標 226
11.8 小結 229
第12章 幀緩衝區對象 230
12.1 為什麼使用幀緩衝區對象 230
12.2 幀緩衝區和渲染緩衝區對象 231
12.2.1 選擇渲染緩衝區與紋理作為幀緩衝區附著的對比 232
12.2.2 幀緩衝區對象與EGL錶麵的對比 232
12.3 創建幀緩衝區和渲染緩衝區對象 233
12.4 使用幀緩衝區對象 234
12.4.1 多重采樣渲染緩衝區 235
12.4.2 渲染緩衝區格式 235
12.5 使用幀緩衝區對象 237
12.5.1 連接渲染緩衝區作為幀緩衝區附著 238
12.5.2 連接一個2D紋理作為幀緩衝區附著 238
12.5.3 連接3D紋理的一個圖像作為幀緩衝區附著 240
12.5.4 檢查幀緩衝區完整性 241
12.6 幀緩衝區位塊傳送 242
12.7 幀緩衝區失效 243
12.8 刪除幀緩衝區和渲染緩衝區對象 244
12.9 刪除用作幀緩衝區附著的渲染緩衝區對象 245
12.10 示例 246
12.11 性能提示和技巧 251
12.12 小結 251
第13章 同步對象和柵欄 252
13.1 刷新和結束 252
13.2 為什麼使用同步對象 253
13.3 創建和刪除同步對象 253
13.4 等待和嚮同步對象發送信號 253
13.5 示例 254
13.6 小結 255
第14章 OpenGL ES 3.0高級編程 256
14.1 逐片段照明 256
14.1.1 使用法綫貼圖的照明 257
14.1.2 照明著色器 258
14.1.3 照明方程式 260
14.2 環境貼圖 261
14.3 使用點精靈的粒子係統 264
14.3.1 粒子係統設置 264
14.3.2 粒子係統頂點著色器 265
14.3.3 粒子係統片段著色器 266
14.4 使用變換反饋的粒子係統 268
14.4.1 粒子係統渲染算法 269
14.4.2 使用變換反饋發射粒子 269
14.4.3 渲染粒子 273
14.5 圖像後處理 274
14.5.1 渲染到紋理設置 274
14.5.2 模糊片段著色器 274
14.5.3 眩光 275
14.6 投影紋理 276
14.6.1 投影紋理基礎 277
14.6.2 投影紋理所用的矩陣 278
14.6.3 投影聚光燈著色器 278
14.7 使用3D紋理的噪聲 281
14.7.1 生成噪聲 281
14.7.2 使用噪聲 285
14.8 過程紋理 286
14.8.1 過程紋理示例 287
14.8.2 過程紋理的抗鋸齒 289
14.8.3 關於過程紋理的延伸閱讀 291
14.9 用頂點紋理讀取渲染地形 291
14.9.1 生成一個正方形的地形網格 292
14.9.2 在頂點著色器中計算頂點法綫並讀取高度值 293
14.9.3 大型地形渲染的延伸閱讀 294
14.10 使用深度紋理的陰影 294
14.10.1 從光源位置渲染到深度紋理 294
14.10.2 從眼睛位置用深度紋理渲染 297
14.11 小結 299
第15章 狀態查詢 300
15.1 OpenGL ES 3.0實現字符串查詢 300
15.2 查詢OpenGL ES實現決定的限製 301
15.3 查詢OpenGL ES狀態 303
15.4 提示 306
15.5 實體名稱查詢 307
15.6 不可編程操作控製和查詢 307
15.7 著色器和程序狀態查詢 308
15.8 頂點屬性查詢 309
15.9 紋理狀態查詢 310
15.10 采樣器查詢 310
15.11 異步對象查詢 311
15.12 同步對象查詢 311
15.13 頂點緩衝區查詢 312
15.14 渲染緩衝區和幀緩衝區狀態查詢 312
15.15 小結 313
第16章 OpenGL ES平颱 314
16.1 在包含Visual Studio的Microsoft Windows上構建 314
16.2 在Ubuntu Linux上構建 316
16.3 在Android 4.3+ NDK (C++)上構建 317
16.3.1 先決條件 317
16.3.2 用Android NDK構建示例代碼 318
16.4 在Android 4.3+ SDK上構建(Java) 318
16.5 在iOS 7上構建 319
16.5.1 先決條件 319
16.5.2 用Xcode 5構建示例代碼 319
16.6 小結 320
附錄A GL_HALF_FLOAT 321
附錄B 內建函數 325
附錄C ES框架API 338
· · · · · · (
收起)