OpenGL 超級寶典, 7/e OpenGL Superbible: Comprehensive Tutorial and Reference, 7/e

Graham Sellers

  • OpenGL 超級寶典, 7/e-preview-1
  • OpenGL 超級寶典, 7/e-preview-2
OpenGL 超級寶典, 7/e-preview-1

買這商品的人也買了...

商品描述

本書是OpenGL及3D圖形編程的經典入門指南,涵蓋了使用OpenGL進行編程所需要的主要知識。

本書內容分3部分。第一部分介紹經典OpenGL繪圖的基礎知識,涉及管線、數學知識、數據、著色器和程序等;第二部分著重介紹OpenGL的一些高級功能,涉及頂點處理與繪圖命令、基元處理片段處理與幀緩沖、計算著色器、高級數據管理、管線監控等;第三部分介紹一些實戰技巧,涉及渲染技巧、高性能的OpenGL、調試和穩定性等。

本書適合希望系統學習OpenGL的讀者閱讀,經驗豐富的OpenGL程序員也能從中獲益。本書既可以作為學習OpenGL的教材,也可以作為隨時查閱的參考手冊。

作者簡介

格雷厄姆·塞勒斯(Graham Sellers)是AMD的软件架构师和工程研究员,是OpenGL ARB中的AMD代表。他为核心的OpenGL规范和扩展做出了贡献,并拥有多项图形和图像处理专利。

小理查德·赖特(Richard S. Wright, Jr.)是Software Bisque公司的高级软件工程师,他用OpenGL开发了多媒体宇航和天文软件。十多年来,他在美国福赛大学(Full Sail University)的游戏开发学位课程中教授OpenGL编程。

尼古拉斯·海梅尔(Nicholas Haemel)是英伟达公司相机软件部门的主管,曾代表英伟达参加KhronosGroup标准组织,并编写了许多OpenGL扩展。

目錄大綱

第 1章 OpenGL簡介 2

1.1 OpenGL和圖形管線 2

1.2 OpenGL的起源和演化 4

1.3 基元、管線和像素 6

1.4 總結 7

第 2章 我們的第 一個OpenGL程序 8

2.1 創建簡單的應用 8

2.2 使用著色器 10

2.3 繪制我們的第 一個三角形 15

2.4 總結 16

第3章 管線 17

3.1 向頂點著色器傳遞數據 17

3.2 在階段之間傳遞數據 19

3.3 細分曲面 21

3.3.1 細分曲面控制著色器 21

3.3.2 細分曲面引擎 23

3.3.3 細分曲面評估著色器 23

3.4 幾何著色器 24

3.5 基元裝配、裁剪和光柵化 25

3.5.1 裁剪 25

3.5.2 視口轉換 26

3.5.3 剔除 27

3.5.4 光柵化 27

3.6 片段著色器 28

3.7 幀緩存運算 30

3.8 計算著色器 31

3.9 使用OpenGL擴展 32

3.10 總結 35

第4章 3D圖形中的數學 36

4.1 本章是在講令人生畏的數學課嗎 36

4.2 3D圖形數學速成課 37

4.2.1 向量 37

4.2.2 常見向量運算符 39

4.2.3 矩陣 41

4.2.4 矩陣構造和運算符 42

4.3 瞭解轉換 44

4.3.1 OpenGL中的坐標空間 45

4.3.2 坐標轉換 46

4.3.3 連接轉換 52

4.3.4 四元數 52

4.3.5 模型—視圖轉換 53

4.3.6 投影轉換 55

4.4 插值、直線、曲線和樣條 58

4.4.1 曲線 58

4.4.2 樣條 61

4.5 總結 63

第5章 數據 64

5.1 緩沖 64

5.1.1 創建緩沖和分配內存 65

5.1.2 填充以及拷貝數據到緩沖 69

5.1.3 使用緩沖為頂點著色器提供數據 71

5.2 統一變量 77

5.2.1 默認區塊統一變量 77

5.2.2 一致區塊 79

5.2.3 使用統一變量轉換幾何圖形 89

5.3 著色器存儲區塊 93

5.4 原子計數器 97

5.5 紋理 101

5.5.1 創建並初始化紋理 101

5.5.2 紋理目標和類型 102

5.5.3 從著色器中紋理讀取數據 103

5.5.4 從文件載入紋理 106

5.5.5 控制紋理數據的讀取方式 108

5.5.6 數組紋理 116

5.5.7 在著色器中向紋理寫入數據 120

5.5.8 同步存取圖像 128

5.5.9 紋理壓縮 128

5.5.10 紋理視圖 131

5.6 總結 133

第6章 著色器和程序 134

6.1 語言概述 134

6.1.1 數據類型 134

6.1.2 內置函數 139

6.2 編譯、鏈接和檢查程序 143

6.2.1 從編譯程序獲得信息 143

6.2.2 從鏈接程序獲得信息 146

6.2.3 單獨程序 147

6.2.4 著色器子程序 152

6.2.5 程序二進制 155

6.3 總結 157

 

第二部分 深入探索

第7章 頂點處理與繪圖命令 160

7.1 頂點處理 160

7.1.1 頂點著色器輸入 160

7.1.2 頂點著色器輸出 164

7.2 繪圖命令 165

7.2.1 索引繪圖命令 165

7.2.2 實例化 170

7.2.3 間接繪制 178

7.3 變換頂點的保存 185

7.3.1 使用變換反饋 185

7.3.2 開始、暫停和停止變換反饋 189

7.3.3 用變換反饋結束管線 190

7.3.4 變換反饋示例:實物模擬 190

7.4 裁剪 196

7.5 總結 200

第8章 基元處理 201

8.1 曲面細分 201

8.1.1 曲面細分基元模式 202

8.1.2 曲面細分子分段模式 208

8.1.3 數據在曲面細分著色器之間的傳遞 209

8.1.4 著色器調用通信 211

8.1.5 曲面細分示例:地形渲染 211

8.1.6 曲面細分示例:三次貝塞爾面片 215

8.2 幾何著色器 219

8.2.1 傳遞幾何著色器 219

8.2.2 在應用程序中使用幾何著色器 221

8.2.3 刪除幾何著色器中的幾何 224

8.2.4 修改幾何著色器中的幾何體 226

8.2.5 在幾何著色器中生成幾何體 227

8.2.6 修改幾何著色器中的基元類型 229

8.2.7 多條儲存流 231

8.2.8 通過幾何著色器引入新基元類型 232

8.2.9 多次視口轉換 237

8.3 總結 239

第9章 片段處理與幀緩沖 240

9.1 片段著色器 240

9.2 單片段測試 243

9.2.1 剪裁測試 243

9.2.2 模板測試 245

9.2.3 深度測試 247

9.2.4 早期測試 250

9.3 顏色輸出 251

9.3.1 混合 251

9.3.2 邏輯運算 254

9.3.3 顏色遮罩 255

9.4 離屏渲染 256

9.4.1 多個幀緩沖附件 260

9.4.2 分層渲染 261

9.4.3 幀緩存的完整性 266

9.4.4 立體渲染 268

9.5 反混疊 272

9.5.1 過濾法反混疊 272

9.5.2 多樣本反混疊 274

9.5.3 多樣本紋理 275

9.5.4 採樣率著色 278

9.5.5 重心採樣 280

9.6 高級幀緩沖格式 282

9.6.1 無附件渲染 283

9.6.2 浮點幀緩沖 284

9.6.3 整數幀緩沖 293

9.6.4 sRGB顏色空間 294

9.7 點精靈 296

9.7.1 點紋理化 296

9.7.2 渲染星空 297

9.7.3 點參數 299

9.7.4 有形點 299

9.7.5 旋轉點 301

9.8 獲取圖像 302

9.8.1 從幀緩存中讀取 302

9.8.2 在幀緩沖之間復制數據 304

9.8.3 讀取紋理數據 307

9.9 總結 308

第 10章 計算著色器 309

10.1 使用計算著色器 309

10.1.1 執行計算著色器 310

10.1.2 計算著色器通信 314

10.2 示例 317

10.2.1 計算著色器並行前綴和 317

10.2.2 計算著色器群集 326

10.3 總結 333

第 11章 高級數據管理 334

11.1 取消綁定 334

11.2 稀疏紋理 338

11.3 紋理壓縮 343

11.3.1 RGTC壓縮方法 343

11.3.2 生成壓縮數據 345

11.4 壓縮數據格式 349

11.5 高質量紋理過濾 351

11.6 總結 353

第 12章 管線監控 354

12.1 查詢 354

12.1.1 遮擋查詢 355

12.1.2 定時查詢 362

12.1.3 變換反饋查詢 365

12.1.4 管線狀態查詢 369

12.2 OpenGL同步 370

12.2.1 清空管線 370

12.2.2 同步與柵欄 371

12.3 總結 374

 

 

第三部分 實戰演練

第 13章 渲染技巧 376

13.1 光照模型 376

13.1.1 Phong光照模型 376

13.1.2 Blinn-Phong光照 382

13.1.3 邊緣光 384

13.1.4 法線映射 386

13.1.5 環境映射 389

13.1.6 材料性質 396

13.1.7 投射陰影 398

13.1.8 霧化效果 401

13.2 非真實感繪制 404

13.3 替代渲染方法 407

13.3.1 延期著色 407

13.3.2 屏幕空間技術 414

13.3.3 無三角渲染 419

13.4 2D圖像 429

13.4.1 距離場紋理 429

13.4.2 位圖字體 433

13.5 總結 436

第 14章 高性能的OpenGL 437

14.1 優化CPU性能 437

14.1.1 OpenGL中的多線程 437

14.1.2 包緩存 441

14.2 OpenGL中的低開銷操作 448

14.2.1 間接渲染 449

14.2.2 GPU工作生成 452

14.2.3 零拷貝 458

14.3 性能分析工具 463

14.3.1 Windows性能工具包和GPUView 464

14.3.2 GPU PerfStudio 466

14.3.3 調試來使應用運行的更快 468

14.4 總結 480

第 15章 調試和穩定性 481

15.1 調試你的程序 481

15.2 安全性和健壯性 486

15.2.1 圖像重置 486

15.2.2 讀取邊界檢查 488

15.3 總結 489

附錄A 超級寶典工具 490

附錄B SBM文件格式 494

附錄C OpenGL的功能和版本 500