会员   密码 您忘记密码了吗?
1,583,355 本书已上架      购物流程 | 常见问题 | 联系我们 | 关于我们 | 用户协议

有店 App


当前分类

商品分类

浏览历史

当前位置: 首页 > 简体书 > 計算機圖形學編程(使用OpenGL和C++)(第2版)
計算機圖形學編程(使用OpenGL和C++)(第2版)
上一张
下一张
prev next

計算機圖形學編程(使用OpenGL和C++)(第2版)

作者: (美)V.斯科特·戈登,(美)約翰·克萊維吉
出版社: 人民郵電出版社
出版日期: 2022-12-01
商品库存: 点击查询库存
以上库存为海外库存属流动性。
可选择“空运”或“海运”配送,空运费每件商品是RM14。
配送时间:空运约8~12个工作天,海运约30个工作天。
(以上预计配送时间不包括出版社库存不足需调货及尚未出版的新品)
定价:   NT539.00
市场价格: RM96.90
本店售价: RM86.24
促销价: RM81.40
剩余时间: 请稍等, 正在载入中...
购买数量:
collect Add to cart Add booking
详细介绍 商品属性 商品标记
內容簡介

本書以OpenGL和C++作為工具,介紹計算機圖形學編程的相關內容。全書從圖形編程的基礎和準備工作講起,介紹了OpenGL圖像管線、3D模型、紋理貼圖、光照、陰影、天空和背景、增強表面細節、曲面細分、幾何著色器、水面模擬、光線追蹤等計算機圖形學編程技術。本書各章配備了不同形式的習題,供讀者鞏固所學知識。本書適合作為高等院校計算機科學專業的計算機圖形編程課程的教材或輔導書,也適合對計算機圖形編程感興趣的讀者自學。


作者介紹

V.斯科特●戈登(V. Scott Gordon)博士已經在加州州立大學系統擔任教授有20多年,目前在加州州立大學薩克拉門托分校教授高級圖形和遊戲工程課程。他撰寫及合著了30多部出版物,涉及人工智慧、神經網路、進化計算、軟體工程、視頻和策略遊戲編程,以及計算機科學教育等多個領域。戈登博士在科羅拉多州立大學獲得博士學位。他同時也是爵士鼓手和優秀的乒乓球運動員。

約翰●克萊維吉(John Clevenger)博士擁有超過40年的教學經驗,教學內容包括高級圖形、遊戲架構、作業系統、VLSI晶片設計、系統模擬和其他主題。他是多個用於圖形和遊戲架構教學的軟體框架和工具的開發人員,其中包括我們Java 版第一版書中所用到的graphicslib3D庫。他是國際大學生程式設計競賽(ICPC). 的技術總監,負責監督PC2的持續開發。PC2是目前世界上使用較為廣泛的編程競賽支援系統。克萊維吉博士在加州大學戴維斯分校獲得博士學位。
 


目錄

第 1 章 入門 1
1.1 語言和庫 1
1.1.1 C++ 1
1.1.2 OpenGL / GLSL 2
1.1.3 視窗管理庫 2
1.1.4 擴展庫 2
1.1.5 數學庫 3
1.1.6 紋理圖像載入庫 3
1.1.7 可選庫 3
1.2 安裝和配置 3
參考資料 4

第2 章 OpenGL 圖像管線 5
2.1 OpenGL 管線 5
2.1.1 C++/OpenGL 應用程式 6
2.1.2 頂點著色器和片段著色器 8
2.1.3 曲面細分著色器 11
2.1.4 幾何著色器 11
2.1.5 柵格化 12
2.1.6 片段著色器 13
2.1.7 圖元操作 13
2.2 檢測 OpenGL 和 GLSL 錯誤 14
2.3 從文件中讀取 GLSL 原始程式碼 16
2.4 從頂點構建對象 17
2.5 場景動畫 18
2.6 C++代碼檔結構 19
補充說明 20
習題 21
參考資料 21

第3 章 數學基礎 22
3.1 3D 坐標系統 22
3.2 點 22
3.3 矩陣 22
3.4 變換矩陣 24
3.4.1 平移矩陣 24
3.4.2 縮放矩陣 25
3.4.3 旋轉矩陣 25
3.5 向量 26
3.5.1 點積的應用 27
3.5.2 叉積的應用 28
3.6 局部和世界空間 28
3.7 視覺空間和合成相機 28
3.8 投影矩陣 30
3.8.1 透視投影矩陣 30
3.8.2 正射投影矩陣 31
3.9 LookAt 矩陣 32
3.10 用來構建矩陣變換的 GLSL
函數 32
補充說明 33
習題 34
參考資料 34

第4 章 管理 3D 圖形數據 35
4.1 緩衝區和頂點屬性 35
4.2 統一變數 37
4.3 頂點屬性插值 37
4.4 模型-視圖和透視矩陣 38
4.5 我們的第 一個3D程式—— 一個3D立方體 39
4.6 渲染一個物件的多個副本 45
產生實體 45
4.7 在同一個場景中渲染多個不同模型 47
4.8 矩陣棧 49
4.9 應對“Z 衝突”偽影 53
4.10 圖元的其他選項 54
4.11 性能優先的程式設計方法 55
4.11.1 儘量減少動態記憶體空間分配 55
4.11.2 預先計算透視矩陣 55
4.11.3 背面剔除 56
補充說明 58
習題 58
參考資料 59

第5 章 紋理貼圖 60
5.1 載入紋理影像檔 60
5.2 紋理座標 61
5.3 創建紋理對象 62
5.4 構建紋理座標 62
5.5 將紋理座標載入緩衝區 63
5.6 在著色器中使用紋理:採樣器變數和紋理單元 64
5.7 紋理貼圖:示例程式 64
5.8 多級漸遠紋理貼圖 66
5.9 各向異性過濾 69
5.10 環繞和平鋪 69
5.11 透視變形 70
5.12 材質— 多OpenGL細節 71
補充說明 72
習題 72
參考資料 72

第6 章 3D 模型 74
6.1 程式構建模型—構建一個球體 74
6.2 OpenGL 索引—構建一個環面 79
6.2.1 環面 79
6.2.2 OpenGL 中的索引 79
6.3 載入外部構建的模型 84
補充說明 90
習題 90
參考資料 90

第7 章 光照 91
7.1 光照模型 91
7.2 光源 91
7.3 材質 93
7.4 ADS 光照計算 95
7.5 實現 ADS 光照 96
7.5.1 Gouraud 著色(雙線性光強插值法) 97
7.5.2 Phong 著色 101
7.6 結合光照與紋理 105
補充說明 106
歷史記錄 106
習題 107
參考資料 107

第8 章 陰影 108
8.1 陰影的重要性 108
8.2 投影陰影 108
8.3 陰影體 109
8.4 陰影貼圖 109
8.4.1 陰影貼圖(第 1 輪)—— 從光源位置“繪製”物體 110
8.4.2 陰影貼圖(中間步驟)——將 Z 緩衝區複製到紋理 111
8.4.3 陰影貼圖(第 2 輪)—— 渲染帶陰影的場景 111
8.5 陰影貼圖示例 113
8.6 陰影貼圖的偽影 117
8.7 柔和陰影 119
8.7.1 現實世界中的柔和陰影 119
8.7.2 生成柔和陰影——百分比鄰近濾波(PCF) 120
8.7.3 柔和陰影/PCF 程式 122
補充說明 124
習題 124
參考資料 125

第9 章 天空和背景 126
9.1 天空盒 126
9.2 穹頂 127
9.3 實現天空盒 128
9.3.1 從頭開始構建天空盒 128
9.3.2 使用 OpenGL 立方體貼圖 131
9.4 環境貼圖 133
補充說明 136
習題 137
參考資料 137

第10 章 增強表面細節 138
10.1 凹凸貼圖 138
10.2 法線貼圖 139
10.3 高度貼圖 145
補充說明 146
習題 147
參考資料 147

第11 章 參數曲面 148
11.1 二次貝茲曲線 148
11.2 三次貝茲曲線 149
11.3 二次貝塞爾曲面 151
11.4 三次貝塞爾曲面 152
補充說明 153
習題 153
參考資料 153

第12 章 曲面細分 154
12.1 OpenGL 中的曲面細分 154
12.2 貝塞爾曲面細分 158
12.3 地形、高度圖的細分 162
12.4 控制細節級別 166
補充說明 168
習題 168
參考資料 168

第13 章 幾何著色器 169
13.1 OpenGL 中的逐個圖元處理 169
13.2 修改圖元 170
13.3 刪除圖元 172
13.4 添加圖元 173
13.5  改圖元類型 175
補充說明 176
習題 176
參考資料 176

第14 章 其他技術 177
14.1 霧 177
14.2 複合、混合、透明度 178
14.3 用戶定義剪裁平面 182
14.4 3D 紋理 183
14.5 雜訊 187
14.6 雜訊應用——大理石 190
14.7 雜訊應用——木材 193
14.8 雜訊應用——雲 195
14.9 雜訊應用——特殊效果 198
補充說明 199
習題 200
參考資料 200

第15 章 模擬水面 202
15.1 游泳池表面和底部的幾何設定 202
15.2 添加水面反射和折射 205
15.3 添加水面波浪 212
15.4  多修正 213
15.5 為水的流動添加動畫 216
15.6 水下焦散 218
補充說明 219
習題 220
參考資料 220

第16 章 光線追蹤和計算著色器 221
16.1 計算著色器 222
16.1.1 編譯及使用計算著色器 222
16.1.2 計算著色器中的平行計算 222
16.1.3 工作組 225
16.1.4 工作組詳解 225
16.1.5 工作組的限制 227
16.2 光線投射 227
16.2.1 定義 2D 紋理圖像 228
16.2.2 構建和顯示光線投射圖像 228
16.2.3 光線與球面的交點 233
16.2.4 軸對齊的光線與立方體的交點 234
16.2.5 無光照的簡單光線投射的輸出 235
16.2.6 添加 ADS 光照 235
16.2.7 添加陰影 237
16.2.8 非軸對齊的光線與立方體的交點 238
16.2.9 確定紋理座標 239
16.2.10 平面交點和過程紋理 244
16.3 光線追蹤 246
16.3.1 反射 246
16.3.2 折射 247
16.3.3 結合反射、折射和紋理 249
16.3.4 增加光線數 250
16.3.5 通用解決方案 254
16.3.6  多示例 257
16.3.7 透明對象的顏色混合 260
補充說明 264
習題 265
參考資料 265

第17章 3D 眼鏡和 VR 頭顯的立體視覺 267
17.1 雙目視圖和投影矩陣 268
17.2 色差式渲染 269
17.3 並排式渲染 270
17.4 修正頭顯的鏡頭畸變 271
17.5 簡單的測試硬體設定 276
補充說明 277
習題 277
參考資料 277

附錄 A PC(Windows)上的安裝與設置 279
A.1 安裝庫和開發環境 279
A.1.1 安裝開發環境 279
A.1.2 安裝 OpenGL/GLSL 279
A.1.3 準備 GLFW 279
A.1.4 準備 GLEW 280
A.1.5 準備 GLM 280
A.1.6 準備 SOIL2 280
A.1.7 準備共用的 lib 和include 資料夾 280
A.2 在 MS Visual Studio 中開發和部署 OpenGL 專案 281
創建 Visual Studio 自訂專案範本 281
參考資料 282
附錄 B Mac(macOS)平臺上的安裝與設置 283
B.1 安裝庫和開發環境 283
B.1.1 準備並安裝依賴庫 283
B.1.2 準備開發環境 284
B.2 修改 Mac 的 C++/OpenGL/ GLSL 應用程式碼 285
B.2.1 修改 C++代碼 285
B.2.2 修改 GLSL 代碼 286
參考資料 287
附錄 C 使用 Nsight 圖形調試器 288
C.1 關於 NVIDIA Nsight 288
C.2 設置 Nsight 288
C.3 在 Nsight 中運行 C++/OpenGL
應用程式 289
參考資料 291