前言
第1章 OpenGL入門 1
1.1 OpenGL概覽 1
1.2 簡單的OpenGL程序舉例 3
1.3 基本OpenGL操作 5
1.4 OpenGL的命令語法 6
1.5 作為狀態(tài)機的OpenGL 7
1.6 OpenGL相關函數庫 8
1.6.1 OpenGL相關函數庫簡介 8
1.6.2 OpenGL輔助庫(GLAUX) 9
1.7 動畫 11
第2章 Windows 95及Windows NT環(huán)境下開發(fā)OpenGL應用程序的基本過程 17
2.1 開發(fā)環(huán)境 17
2.1.1 系統(tǒng)硬件配置要求 17
2.1.2 開發(fā)OpenGL應用程序的軟件要求 17
2.2 OpenGL應用程序開發(fā)基本過程 18
2.2.1 源代碼的編寫 18
2.2.2 Win32控制臺風格應用程序的開發(fā) 18
2.2.3 Win32 MFC風格應用程序的開發(fā) 22
第3章 實體建?;A 24
3.1 一個繪圖補救工具包 24
3.1.1 清除窗口 25
3.1.2 指定顏色 27
3.1.3 完成繪圖 28
3.1.4 隱藏面的消除 29
3.2 點. 線和多邊形的描述 30
3.2.1 點. 線和多邊形的定義 30
3.2.2 定義頂點 33
3.2.3 OpenGL的幾何繪圖圖元 34
3.2.4 使用glBegin()和glEnd()的限制 37
3.3 顯示點. 線和多邊形 38
3.3.1 關于點的細節(jié) 38
3.3.2 關于線的細節(jié) 39
3.3.3 關于多邊形的細節(jié) 43
3.4 法線向量 49
3.5 創(chuàng)建表面的多邊形模型需注意的問題 51
第4章 視圖 59
4.1 概述:照相機類比法 60
4.1.1 照相機類比法及其在計算機中的實現 60
4.1.2 一個簡單的例子:繪制立方體 62
4.1.3 多種用途的變換函數 66
4.2 視圖變換和模型變換 67
4.2.1 關于變換的說明 68
4.2.2 模型變換 70
4.2.3 視圖變換 74
4.3 投影變換 78
4.3.1 透視投影 78
4.3.2 正交投影 80
4.3.3 視圖體的裁剪 82
4.4 視區(qū)變換 82
4.4.1 定義視區(qū) 82
4.4.2 變換后的Z坐標 84
4.5 變換的診斷 84
4.6 矩陣堆棧的操作 86
4.6.1 模型視圖矩陣堆棧 88
4.6.2 投影矩陣堆棧 88
4.7 附加裁剪平面 89
4.8 組合變換舉例 92
4.8.1 建立一個太陽系模型 92
4.8.2 建立一個有關節(jié)的機器人手臂模型 95
第5章 顯示列表 100
5.1 一個使用顯示列表的范例 100
5.2 顯示列表設計準則 102
5.3 顯示列表的創(chuàng)建和執(zhí)行 104
5.3.1 顯示列表的存儲內容 106
5.3.2 執(zhí)行顯示列表 107
5.3.3 顯示列表的層次結構 109
5.4 顯示列表及其索引的管理 110
5.5 執(zhí)行多個顯示列表 111
5.6 封裝模式的改變 117
第6章 顏色 119
6.1 顏色的感知 119
6.2 計算機的顏色 120
6.3 RGBA模式與顏色索引模式 122
6.3.1 RGBA模式與顏色索引模式的對比 122
6.3.2 RGBA顯示模式 123
6.3.3 抖動操作 123
6.3.4 顏色索引顯示模式 125
6.3.5 在RGBA模式與顏色索引模式之間進行選擇 126
6.4 指定顏色和陰影模型 126
6.4.1 在RGBA模式下指定顏色 127
6.4.2 在指定顏色索引模式下指定顏色 128
6.4.3 指定陰影模型 128
第7章 光照 132
7.1 真實世界與OpenGL光照 133
7.1.1 發(fā)射光, 環(huán)境光, 散射光和鏡面反射光 133
7.1.2 材料顏色 134
7.1.3 光線與材質的RGB值 134
7.2 一個簡單的例子:光照球體的渲染 135
7.2.1 為所有的物體頂點定義法線向量 137
7.2.2 創(chuàng)建, 定位和激活一個或多個光源 137
7.2.3 選擇光照模型 137
7.2.4 定義場景中物體的材質屬性 137
7.2.5 一些重要說明 138
7.3 創(chuàng)建光源 138
7.3.1 顏色 139
7.3.2 定位和衰減 140
7.3.3 聚光燈 140
7.3.4 多光源 141
7.3.5 控制光源的位置與方向 142
7.4 選擇光照模型 147
7.4.1 全局環(huán)境光 147
7.4.2 局部或無窮遠的視點 147
7.4.3 雙面光照 148
7.4.4 激活光照 148
7.5 材料屬性的定義 148
7.5.1 散射和環(huán)境光反射 150
7.5.2 鏡面反射 150
7.5.3 發(fā)射光顏色 151
7.5.4 改變材質屬性 151
7.6 光照的數學計算 156
7.6.1 材質的發(fā)射光 157
7.6.2 放大的全局環(huán)境光 157
7.6.3 光源的貢獻 157
7.6.4 聚光燈效果 157
7.6.5 環(huán)境光項 158
7.6.6 散射光項 158
7.6.7 鏡面反射光項 158
7.6.8 求和 159
7.6.9 顏色索引模式下的光照 159
7.6.10 顏色索引模式下光照的數學計算 160
第8章 混合. 反走樣. 霧 161
8.1 混合 161
8.1.1 源因子和目標因子 162
8.1.2 混合的簡單使用 163
8.1.3 混合操作范例 164
8.1.4 具有深度緩存的三維混合 167
8.2 反走樣 171
8.2.1 點和線的反走樣 173
8.2.2 多邊形的反走樣 178
8.3 霧 182
8.3.1 霧的使用 182
8.3.2 霧的方程 186
第9章 繪制像素. 位圖. 字體和圖像 191
9.1 位圖和字體 191
9.1.1 當前光柵位置 194
9.1.2 繪制位圖 195
9.1.3 字體和顯示列表 196
9.1.4 一個完整的字體定義和使用 197
9.2 圖像 203
9.2.1 像素數據的讀. 寫和拷貝 203
9.2.2 圖像的放大與縮小 206
9.3 像素的存儲. 變換和映射 206
9.3.1 像素模式概論 206
9.3.2 像素存儲控制模式 207
9.3.3 像素傳遞操作 209
9.3.4 像素矩形 210
9.3.5 像素讀取過程詳解 212
9.3.6 像素映射 213
第10章 紋理映射 215
10.1 概述及范例 217
10.1.1 紋理映射的步驟 217
10.1.2 一個簡單的程序 218
10.2 指定紋理 221
10.2.1 使用紋理邊界 222
10.2.2 細節(jié)等級(Level of Details) 222
10.2.3 控制過濾 228
10.2.4 一維紋理 230
10.3 調節(jié)和混合 230
10.4 分配紋理坐標 232
10.4.1 計算紋理坐標 232
10.4.2 紋理的重復和截取 233
10.5 自動紋理坐標生成 235
10.5.1 創(chuàng)建輪廓 236
10.5.2 環(huán)境映射 239
10.6 高級特性 240
10.6.1 紋理矩陣堆棧 240
10.6.2 紋理的q坐標 241
第11章 幀緩存 242
11.1 緩存及其使用 243
11.1.1 各種緩存概述 244
11.1.2 清空緩存 245
11.1.3 為寫操作選擇顏色緩存 246
11.1.4 緩存屏蔽 246
11.2 片原的測試與操作 247
11.2.1 剪取測試 248
11.2.2 alpha測試 248
11.2.3 模板測試 249
11.2.4 深度測試 254
11.2.5 混合, 抖動及邏輯操作 255
11.3 累積緩存 257
11.3.1 場景反走樣 257
11.3.2 運動模糊度 269
11.3.3 景深 270
11.3.4 柔和陰影 276
11.3.5 抖動 276
第12章 求值程序和非均勻有理B樣條(NURBS) 278
12.1 概述 278
12.2 求值程序 279
12.2.1 一維求值程序 279
12.2.2 二維求值程序 284
12.3 GLU的NURBS接口程序 296
12.3.1 簡單的NURBS范例 296
12.3.2 修剪 302
第13章 選擇機制 306
13.1 選擇 306
13.1.1 基本步驟 307
13.1.2 創(chuàng)建命名堆棧 307
13.1.3 選中記錄 309
13.1.4 一個選擇的實例 309
13.1.5 拾取 314
13.1.6 用多個命名和分層模型進行拾取 320
13.1.7 拾取和深度值 322
13.1.8 在編程中使用選擇機制的一些提示 326
13.2 反饋 327
13.2.1 反饋數組 328
13.2.2 在反饋模式下使用標記 329
13.2.3 一個反饋的例子 330
第14章 OpenGL應用及提高應用程序性能的技巧 335
14.1 輕松制作透明物體 336
14.2 輕松實現淡出效果 336
14.3 利用后緩存進行物體選擇 337
14.4 方便的圖像變換 338
14.5 分層顯示 339
14.6 字符反走樣 340
14.7 繪制圓形的點 342
14.8 插入圖像 342
14.9 制作貼花 342
14.10 用模板緩存繪制填充的凹多邊形 343
14.11 確定重疊區(qū)域 344
14.12 陰影 345
14.13 消除隱藏線 345
14.14 紋理映射的應用 346
14.15 繪制深度緩存圖像 347
14.16 笛里希累(Dirichlet)域 347
14.17 生命游戲(Life Game) 348
14.18 交替使用glDrawPixels()和glCopyPixels() 349
第15章 高級應用(一):OpenGL與AutoCAD的圖形接口 351
15.1 AutoCAD簡介 351
15.2 DXF文件分析 352
15.2.1 DXF文件的基本結構 352
15.2.2 實體段分析 354
15.3 DXF接口程序的編寫 356
15.4 OpenGL 的DXF擴展庫函數的制作 362
15.5 高級應用實例 363
第16章 高級應用(二):三維隨機分形地形的生成 372
16.1 分形的基本原理 372
16.1.1 自相似 373
16.1.2 一維中點變換 373
16.1.3 Diamond-Square算法 376
16.1.4 藍天白云的生成 380
16.2 分形地形生成實例 381
16.2.1 程序的運行 381
16.2.2 代碼結構分析 382
附錄1 OpenGL中的操作順序 405
附1.1 概述 405
附1.2 幾何操作 406
附1.2.1 頂點操作 406
附1.2.2 圖元裝配 406
附1.3 像素操作 407
附1.4 片元操作 407
附1.5 補充說明 407
附錄2 OpenGL狀態(tài)變量 409
附2.1 查詢命令 409
附2.2 出錯處理 410
附2.3 狀態(tài)變量的保存和恢復 411
附2.4 OpenGL的狀態(tài)變量 412
附2.4.1 當前值和相關數據 413
附2.4.2 變換 413
附2.4.3 顏色 414
附2.4.4 光照 414
附2.4.5 光柵化 416
附2.4.6 紋理 416
附2.4.7 像素操作 417
附2.4.8 幀緩存控制 418
附2.4.9 像素 419
附2.4.10 求值程序 420
附2.4.11 提示 420
附2.4.12 依賴執(zhí)行的值 420
附2.4.13 像素深度 422
附2.4.14 混合 422
附錄3 OpenGL實用庫 423
附3.1 紋理映射中的圖像操作 423
附3.2 變換坐標 424
附3.3 多邊形網格化 425
附3.4 回調機制 425
附3.5 網格化物體 425
附3.6 指定回調函數 426
附3.7 描述網格化多邊形 427
附3.8 渲染球體. 圓柱和圓盤 428
附3.9 NURBS曲線和曲面 429
附3.10 錯誤的描述 430
附錄4 OpenGL對X窗口系統(tǒng)的擴展 431
附4.1 初始化 431
附4.2 控制渲染 431
附4.2.1 管理OpenGL渲染內容 431
附4.2.2 后臺渲染 432
附4.2.3 同步執(zhí)行 432
附4.2.4 交換緩存 432
附4.2.5 使用X字體 432
附4.3 GLX庫函數原型 432
附錄5 OpenGL輔助庫 434
附5.1 初始化及退出窗口 434
附5.2 處理窗口和輸入事件 435
附5.3 裝載顏色圖 435
附5.4 初始化和繪制三維物體 435
附5.5 管理后臺進程 437
附5.6 運行程序 437
附錄6 計算法線向量 438
附6.1 為解析表面確定法線 438
附6.2 由多邊形數據確定法線 440
附錄7 齊次坐標與變換矩陣 442
附7.1 齊次坐標 442
附7.2 變換 442
附7.2.1 頂點變換 442
附7.2.2 法線變換 443
附7.2.3 變換矩陣 443
附錄8 OpenGL編程要點 446
附8.1 OpenGL正確編程技巧 446
附8.2 提高OpenGL程序性能 447
附8.3 GLX的技巧 448
附錄9 OpenGL的不變性 449
附錄10 術語表 450
A 450
B 450
C 451
D 452
E 453
F 453
G 454
H 455
I 455
L 456
M 456
N 456
O 457
P 457
R 458
S 458
T 459
V 459
X 460