【有庫存】NT售價: 450 元
本書以OpenGL和C++作為工具,介紹計算機圖形學編程的相關內容。全書從圖形編程的基礎和準備工作講起,介紹了OpenGL圖像管線、3D模型、紋理貼圖、光照、陰影、天空和背景、增強表面細節、曲面細分、幾何著色器、水面模擬、光線追蹤等計算機圖形學編程技術。本書各章配備了不同形式的習題,供讀者鞏固所學知識。本書適合作為高等院校計算機科學專業的計算機圖形編程課程的教材或輔導書,也適合對計算機圖形編程感興趣的讀者自學。
第 1 章 入門 1 1.1 語言和庫 11.1.1 C++ 11.1.2 OpenGL / GLSL 21.1.3 窗口管理庫 21.1.4 擴展庫 21.1.5 數學庫 31.1.6 紋理圖像加載庫 31.1.7 可選庫 31.2 安裝和配置 3參考資料 4第 2 章 OpenGL 圖像管線 52.1 OpenGL 管線 52.1.1 C++/OpenGL 應用程序 62.1.2 頂點著色器和片段著色器 82.1.3 曲面細分著色器 112.1.4 幾何著色器 112.1.5 柵格化 122.1.6 片段著色器 132.1.7 像素操作 132.2 檢測 OpenGL 和 GLSL 錯誤 142.3 從文件中讀取 GLSL 源代碼 162.4 從頂點構建對象 172.5 場景動畫 182.6 C++代碼文件結構 19補充說明 20習題 21參考資料 21第 3 章 數學基礎 223.1 3D 坐標系統 223.2 點 223.3 矩陣 223.4 變換矩陣 243.4.1 平移矩陣 243.4.2 縮放矩陣 253.4.3 旋轉矩陣 253.5 向量 263.5.1 點積的應用 273.5.2 叉積的應用 283.6 局部和世界空間 283.7 視覺空間和合成相機 283.8 投影矩陣 303.8.1 透視投影矩陣 303.8.2 正射投影矩陣 313.9 LookAt 矩陣 323.10 用來構建矩陣變換的 GLSL函數 32補充說明 33習題 34參考資料 34第 4 章 管理 3D 圖形數據 354.1 緩沖區和頂點屬性 354.2 統一變量 374.3 頂點屬性插值 374.4 模型-視圖和透視矩陣 384.5 我們的第 一個3D程序—— 一個3D立方體 394.6 渲染一個對象的多個副本 45實例化 454.7 在同一個場景中渲染多個不同模型 474.8 矩陣棧 494.9 應對“Z 沖突”偽影 534.10 圖元的其他選項 544.11 性能優先的編程方法 554.11.1 盡量減少動態內存空間分配 554.11.2 預先計算透視矩陣 554.11.3 背面剔除 56補充說明 58習題 58參考資料 59第 5 章 紋理貼圖 605.1 加載紋理圖像文件 605.2 紋理坐標 615.3 創建紋理對象 625.4 構建紋理坐標 625.5 將紋理坐標載入緩沖區 635.6 在著色器中使用紋理:采樣器變量和紋理單元 645.7 紋理貼圖:示例程序 645.8 多級漸遠紋理貼圖 665.9 各向異性過濾 695.10 環繞和平鋪 695.11 透視變形 705.12 材質—更多OpenGL細節 71補充說明 72習題 72參考資料 72第 6 章 3D 模型 746.1 程序構建模型—構建一個球體 746.2 OpenGL 索引—構建一個環面 796.2.1 環面 796.2.2 OpenGL 中的索引 796.3 加載外部構建的模型 84補充說明 90習題 90參考資料 90第 7 章 光照 917.1 光照模型 917.2 光源 917.3 材質 937.4 ADS 光照計算 957.5 實現 ADS 光照 967.5.1 Gouraud 著色(雙線性光強插值法) 977.5.2 Phong 著色 1017.6 結合光照與紋理 105補充說明 106歷史記錄 106習題 107參考資料 107第 8 章 陰影 1088.1 陰影的重要性 1088.2 投影陰影 1088.3 陰影體 1098.4 陰影貼圖 1098.4.1 陰影貼圖(第 1 輪)—— 從光源位置“繪制”物體 1108.4.2 陰影貼圖(中間步驟)——將 Z 緩沖區復制到紋理 1118.4.3 陰影貼圖(第 2 輪)—— 渲染帶陰影的場景 1118.5 陰影貼圖示例 1138.6 陰影貼圖的偽影 1178.7 柔和陰影 1198.7.1 現實世界中的柔和陰影 1198.7.2 生成柔和陰影——百分比鄰近濾波(PCF) 1208.7.3 柔和陰影/PCF 程序 122補充說明 124習題 124參考資料 125第 9 章 天空和背景 1269.1 天空盒 1269.2 穹頂 1279.3 實現天空盒 1289.3.1 從頭開始構建天空盒 1289.3.2 使用 OpenGL 立方體貼圖 1319.4 環境貼圖 133補充說明 136習題 137參考資料 137第 10 章 增強表面細節 13810.1 凹凸貼圖 13810.2 法線貼圖 13910.3 高度貼圖 145補充說明 146習題 147參考資料 147第 11 章 參數曲面 14811.1 二次貝塞爾曲線 14811.2 三次貝塞爾曲線 14911.3 二次貝塞爾曲面 15111.4 三次貝塞爾曲面 152補充說明 153習題 153參考資料 153第 12 章 曲面細分 15412.1 OpenGL 中的曲面細分 15412.2 貝塞爾曲面細分 15812.3 地形、高度圖的細分 16212.4 控制細節級別 166補充說明 168習題 168參考資料 168第 13 章 幾何著色器 16913.1 OpenGL 中的逐個圖元處理 16913.2 修改圖元 17013.3 刪除圖元 17213.4 添加圖元 17313.5 更改圖元類型 175補充說明 176習題 176參考資料 176第 14 章 其他技術 17714.1 霧 17714.2 復合、混合、透明度 17814.3 用戶定義剪裁平面 18214.4 3D 紋理 18314.5 噪聲 18714.6 噪聲應用——大理石 19014.7 噪聲應用——木材 19314.8 噪聲應用——云 19514.9 噪聲應用——特殊效果 198補充說明 199習題 200參考資料 200第 15 章 模擬水面 20215.1 游泳池表面和底部的幾何設定 20215.2 添加水面反射和折射 20515.3 添加水面波浪 21215.4 更多修正 21315.5 為水的流動添加動畫 21615.6 水下焦散 218補充說明 219習題 220參考資料 220第 16 章 光線追蹤和計算著色器 22116.1 計算著色器 22216.1.1 編譯及使用計算著色器 22216.1.2 計算著色器中的并行計算 22216.1.3 工作組 22516.1.4 工作組詳解 22516.1.5 工作組的限制 22716.2 光線投射 22716.2.1 定義 2D 紋理圖像 22816.2.2 構建和顯示光線投射圖像 22816.2.3 光線與球面的交點 23316.2.4 軸對齊的光線與立方體的交點 23416.2.5 無光照的簡單光線投射的輸出 23516.2.6 添加 ADS 光照 23516.2.7 添加陰影 23716.2.8 非軸對齊的光線與立方體的交點 23816.2.9 確定紋理坐標 23916.2.10 平面交點和過程紋理 24416.3 光線追蹤 24616.3.1 反射 24616.3.2 折射 24716.3.3 結合反射、折射和紋理 24916.3.4 增加光線數 25016.3.5 通用解決方案 25416.3.6 更多示例 25716.3.7 透明對象的顏色混合 260補充說明 264習題 265參考資料 265第 17 章 3D 眼鏡和 VR 頭顯的立體視覺 26717.1 雙目視圖和投影矩陣 26817.2 色差式渲染 26917.3 并排式渲染 27017.4 修正頭顯的鏡頭畸變 27117.5 簡單的測試硬件配置 276補充說明 277習題 277參考資料 277附錄 A PC(Windows)上的安裝與設置 279A.1 安裝庫和開發環境 279A.1.1 安裝開發環境 279A.1.2 安裝 OpenGL/GLSL 279A.1.3 準備 GLFW 279A.1.4 準備 GLEW 280A.1.5 準備 GLM 280A.1.6 準備 SOIL2 280A.1.7 準備共享的 lib 和include 文件夾 280A.2 在 MS Visual Studio 中開發和部署 OpenGL 項目 281創建 Visual Studio 自定義項目模板 281參考資料 282附錄 B Mac(macOS)平臺上的安裝與設置 283B.1 安裝庫和開發環境 283B.1.1 準備并安裝依賴庫 283B.1.2 準備開發環境 284B.2 修改 Mac 的 C++/OpenGL/ GLSL 應用程序代碼 285B.2.1 修改 C++代碼 285B.2.2 修改 GLSL 代碼 286參考資料 287附錄 C 使用 Nsight 圖形調試器 288C.1 關于 NVIDIA Nsight 288C.2 設置 Nsight 288C.3 在 Nsight 中運行 C++/OpenGL應用程序 289參考資料 291