新到貨2本75折
DirectX 12 3D 遊戲開發實戰

DirectX 12 3D 遊戲開發實戰

  • 定價:888
  • 優惠價:87773
  • 運送方式:
  • 臺灣與離島
  • 海外
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
載入中...
  • 分享
 

內容簡介

Direct3D是微軟公司DirectX SDK集成開發包中的重要組成部分,是編寫高性能3D圖形應用程式的渲染庫,適用於多媒體、娛樂、即時3D動畫等廣泛和實用的3D圖形計算領域。

本書圍繞互動式計算機圖形學這一主題展開,著重介紹Direct3D的基礎知識和著色器編程的方法,並介紹了如何利用Direct3D來實現各種有趣的技術與特效,旨在為讀者學習圖形技術奠定堅實的基礎。本書包括3部分內容。第一部分介紹數學知識,涵蓋向量代數、矩陣代數和變換等內容。這是貫穿全書的數學工具,是讀者需要掌握的基礎內容。第二部分重點介紹Direct3D的基礎知識,展示用Direct3D來實現繪圖任務的基本概念與技術,如渲染流水線、紋理貼圖、混合、曲面細分等。第三部分則利用Direct3D來實現各種有趣的特效,如產生實體與視錐體剔除、陰影貼圖、環境光遮蔽等。

本書適合希望通過Direct3D來學習3D編程的C++中級程式員閱讀,也可供已對Direct3D有一定瞭解或具有非DirectX API使用經驗的3D程式員參考。
 

作者介紹

弗蘭克·D·盧娜(Frank D. Luna)

畢業于加利福尼亞大學歐文分校,獲得數學學士學位,具備著超過15年的DirectX互動式圖形學程式設計經驗,著有3本DirectX暢銷書,曾從事3D醫療視覺化、3D建築設計軟體以及遊戲相關工作。
 

目錄

第一部分 必備的數學知識

第1章 向量代數 3
1.1 向量 3
1.1.1 向量與坐標系 4
1.1.2 左手坐標系與右手坐標系 5
1.1.3 向量的基本運算 6
1.2 長度和單位向量 8
1.3 點積 9
1.4 叉積 12
1.4.1 2D向量的偽叉積 13
1.4.2 通過叉積來進行正交化處理 13
1.5 點 14
1.6 利用DirectXMath庫進行向量運算 15
1.6.1 向量類型 16
1.6.2 載入方法和存儲方法 17
1.6.3 參數的傳遞 18
1.6.4 常向量 20
1.6.5 重載運算子 21
1.6.6 雜項 21
1.6.7 Setter函數 21
1.6.8 向量函數 23
1.6.9 浮點數誤差 26
1.7 小結 28
1.8 練習 29
第2章 矩陣代數 34
2.1 矩陣的定義 34
2.2 矩陣乘法 36
2.2.1 定義 36
2.2.2 向量與矩陣的乘法 37
2.2.3 結合律 37
2.3 轉置矩陣 38
2.4 單位矩陣 38
2.5 矩陣的行列式 39
2.5.1 餘子陣 40
2.5.2 行列式的定義 40
2.6 伴隨矩陣 41
2.7 逆矩陣 42
2.8 用DirectXMath庫處理矩陣 43
2.8.1 矩陣類型 44
2.8.2 矩陣函數 46
2.8.3 DirectXMath矩陣示例程式 47
2.9 小結 49
2.10 練習 49
第3章 變換 52
3.1 線性變換 52
3.1.1 定義 52
3.1.2 矩陣標記法 53
3.1.3 縮放 53
3.1.4 旋轉 55
3.2 仿射變換 58
3.2.1 齊次座標 58
3.2.2 仿射變換的定義及其矩陣表示 58
3.2.3 平移 59
3.2.4 縮放和旋轉的仿射矩陣 61
3.2.5 仿射變換矩陣的幾何意義 61
3.3 變換的複合 62
3.4 座標變換 63
3.4.1 向量的座標變換 64
3.4.2 點的座標變換 65
3.4.3 座標變換的矩陣表示 66
3.4.4 座標變換矩陣及其結合律 66
3.4.5 座標變換矩陣及其逆矩陣 67
3.5 變換矩陣與座標變換矩陣 68
3.6 DirectXMath庫提供的變換函數 69
3.7 小結 70
3.8 練習 71

第二部分 Direct3D基礎

第4章 Direct3D的初始化 77
4.1 預備知識 77
4.1.1 Direct3D 12概述 77
4.1.2 元件物件模型 78
4.1.3 紋理格式 79
4.1.4 交換鏈和頁面翻轉 80
4.1.5 深度緩衝 81
4.1.6 資源與描述符 83
4.1.7 多重採樣技術的原理 85
4.1.8 利用Direct3D進行多重採樣 87
4.1.9 功能級別 88
4.1.10 DirectX圖形基礎結構 89
4.1.11 功能支援的檢測 92
4.1.12 資源駐留 93
4.2 CPU與GPU間的交互 94
4.2.1 命令佇列和命令清單 94
4.2.2 CPU與GPU間的同步 98
4.2.3 資源轉換 100
4.2.4 命令與多執行緒 101
4.3 初始化Direct3D 102
4.3.1 創建設備 102
4.3.2 創建圍欄並獲取描述符的大小 104
4.3.3 檢測對4X MSAA品質級別的支持 104
4.3.4 創建命令佇列和命令清單 105
4.3.5 描述並創建交換鏈 105
4.3.6 創建描述符堆 107
4.3.7 創建渲染目標視圖 108
4.3.8 創建深度/範本緩衝區及其視圖 110
4.3.9 設置視口 114
4.3.10 設置裁剪矩形 115
4.4 計時與動畫 116
4.4.1 性能計時器 116
4.4.2 遊戲計時器類 117
4.4.3 幀與幀之間的時間間隔 118
4.4.4 總時間 120
4.5 應用程式框架示例 123
4.5.1 D3DApp類 123
4.5.2 非框架方法 126
4.5.3 框架方法 127
4.5.4 幀的統計資訊 128
4.5.5 消息處理函數 130
4.5.6 “初始化Direct3D演示”程式 131
4.6 調試Direct3D應用程式 135
4.7 小結 137
第5章 渲染流水線 139
5.1 3D視覺即錯覺? 140
5.2 模型的表示 141
5.3 電腦色彩基礎 142
5.3.1 顏色運算 143
5.3.2 128位顏色 143
5.3.3 32位顏色 144
5.4 渲染流水線概述 145
5.5 輸入裝配器階段 147
5.5.1 頂點 147
5.5.2 圖元拓撲 147
5.5.3 索引 151
5.6 頂點著色器階段 152
5.6.1 局部空間和世界空間 153
5.6.2 觀察空間 156
5.6.3 投影和齊次裁剪空間 158
5.7 曲面細分階段 164
5.8 幾何著色器階段 165
5.9 裁剪 165
5.10 光柵化階段 167
5.10.1 視口變換 167
5.10.2 背面剔除 167
5.10.3 頂點屬性插值 169
5.11 圖元著色器階段 170
5.12 輸出合併階段 170
5.13 小結 171
5.14 練習 171
第6章 利用Direct3D繪製幾何體 175
6.1 頂點與輸入佈局 175
6.2 頂點緩衝區 178
6.3 索引和索引緩衝區 183
6.4 頂點著色器示例 187
6.5 圖元著色器示例 192
6.6 常量緩衝區 195
6.6.1 創建常量緩衝區 195
6.6.2 更新常量緩衝區 198
6.6.3 上傳緩衝區輔助函數 198
6.6.4 常量緩衝區描述符 201
6.6.5 根簽名和描述符表 202
6.7 編譯著色器 206
6.7.1 離線編譯 208
6.7.2 生成著色器彙編代碼 210
6.7.3 利用Visual Studio離線編譯著色器 212
6.8 光柵器狀態 213
6.9 流水線狀態物件 214
6.10 幾何圖形輔助結構體 217
6.11 立方體演示程式 219
6.12 小結 229
6.13 練習 230
第7章 利用Direct3D繪製幾何體(續) 235
7.1 幀資源 235
7.2 渲染項 238
7.3 渲染過程中所用到的常量資料 239
7.4 不同形狀的幾何體 242
7.4.1 生成柱體網格 244
7.4.2 生成球體網格 248
7.4.3 生成幾何球體網格 249
7.5 繪製多種幾何體演示程式 251
7.5.1 頂點緩衝區和索引緩衝區 252
7.5.2 渲染項 255
7.5.3 幀內資源和常量緩衝區視圖 257
7.5.4 繪製場景 260
7.6 細探根簽名 262
7.6.1 根參數 263
7.6.2 描述符表 264
7.6.3 根描述符 266
7.6.4 根常量 267
7.6.5 更複雜的根簽名示例 269
7.6.6 根參數的版本控制 270
7.7 陸地與波浪演示程式 271
7.7.1 生成柵格頂點 273
7.7.2 生成柵格索引 274
7.7.3 應用計算高度的函數 275
7.7.4 根常量緩衝區視圖 277
7.7.5 動態頂點緩衝區 279
7.8 小結 281
7.9 練習 282
第8章 光照 283
8.1 光照與材質的交互 283
8.2 法向量 285
8.2.1 計算法向量 286
8.2.2 變換法向量 288
8.3 參與光照計算的一些關鍵向量 289
8.4 朗伯余弦定律 290
8.5 漫反射光照 292
8.6 環境光照 292
8.7 鏡面光照 293
8.7.1 菲涅耳效應 294
8.7.2 表面粗糙度 296
8.8 光照模型的概述 298
8.9 材質的實現 299
8.10 平行光源 304
8.11 點光源 304
8.12 聚光燈光源 306
8.13 光照的具體實現 306
8.13.1 Light結構體 307
8.13.2 常用輔助函數 308
8.13.3 實現方向光源 310
8.13.4 實現點光源 310
8.13.5 實現聚光燈光源 311
8.13.6 多種光照的疊加 312
8.13.7 HLSL主文件 313
8.14 光照演示程式 316
8.14.1 頂點格式 317
8.14.2 計算法線 317
8.14.3 更新光照的方向 319
8.14.4 更新根簽名 320
8.15 小結 320
8.16 練習 321
第9章 紋理貼圖 323
9.1 紋理與資源的回顧 324
9.2 紋理座標 325
9.3 紋理資料來源 328
9.3.1 DDS格式概述 328
9.3.2 創建DDS文件 329
9.4 創建以及啟用紋理 330
9.4.1 載入DDS檔 330
9.4.2 著色器資源視圖堆 331
9.4.3 創建著色器資源視圖描述符 331
9.4.4 將紋理綁定到流水線 333
9.5 篩檢程式 335
9.5.1 放大 335
9.5.2 縮小 337
9.5.3 各向異性過濾 338
9.6 定址模式 339
9.7 採樣器對象 341
9.7.1 創建採樣器 341
9.7.2 靜態採樣器 344
9.8 在著色器中對紋理進行採樣 346
9.9 板條箱演示程式 347
9.9.1 指定紋理座標 347
9.9.2 創建紋理 348
9.9.3 設置紋理 349
9.9.4 更新HLSL部分代碼 349
9.10 紋理變換 352
9.11 附有紋理的山川演示程式 353
9.11.1 生成柵格紋理座標 353
9.11.2 鋪設紋理 355
9.11.3 紋理動畫 355
9.12 小結 356
9.13 練習 356
第10章 混合 359
10.1 混合方程 360
10.2 混合運算 360
10.3 混合因數 362
10.4 混合狀態 363
10.5 混合示例 365
10.5.1 禁止顏色的寫操作 365
10.5.2 加法混合與減法混合 366
10.5.3 乘法混合 366
10.5.4 透明混合 367
10.5.5 混合與深度緩衝區 368
10.6 alpha通道 368
10.7 裁剪圖元 369
10.8 霧 371
10.9 小結 377
10.10 練習 377
第11章 範本 379
11.1 深度/範本緩衝區的格式及其資源資料的清理 380
11.2 範本測試 381
11.3 描述深度/範本狀態 382
11.3.1 深度資訊的相關設置 382
11.3.2 範本資訊的相關設置 383
11.3.3 創建和綁定深度/範本狀態 384
11.4 實現平面鏡效果 385
11.4.1 鏡像概述 385
11.4.2 定義鏡像的深度/範本狀態 387
11.4.3 繪製場景 389
11.4.4 繞序與鏡像 390
11.5 實現平面陰影 391
11.5.1 平行光陰影 391
11.5.2 點光陰影 393
11.5.3 通用陰影矩陣 394
11.5.4 使用範本緩衝區防止雙重混合 394
11.5.5 編寫陰影部分的代碼 395
11.6 小結 396
11.7 練習 397
第12章 幾何著色器 402
12.1 編寫幾何著色器 402
12.2 以公告牌技術實現森林效果 408
12.2.1 概述 408
12.2.2 頂點結構體 410
12.2.3 HLSL文件 411
12.2.4 SV_PrimitiveID語義 416
12.3 紋理陣列 417
12.3.1 概述 417
12.3.2 對紋理陣列進行採樣 417
12.3.3 載入紋理陣列 418
12.3.4 紋理子資源 418
12.4 alpha-to-coverage技術 419
12.5 小結 421
12.6 練習 422
第13章 計算著色器 425
13.1 執行緒與執行緒組 427
13.2 一個簡單的計算著色器 428
13.3 資料的輸入與輸出資源 430
13.3.1 紋理輸入 430
13.3.2 紋理輸出與無序訪問視圖 430
13.3.3 利用索引對紋理進行採樣 433
13.3.4 結構化緩衝區資源 435
13.3.5 將計算著色器的執行結果複製到系統記憶體 437
13.4 執行緒標識的系統值 441
13.5 追加緩衝區與消費緩衝區 442
13.6 共用記憶體與執行緒同步 443
13.7 圖像模糊演示程式 445
13.7.1 圖像模糊理論 445
13.7.2 渲染到紋理技術 448
13.7.3 圖像模糊的實現概述 450
13.7.4 計算著色器程式 456
13.8 拓展資料 461
13.9 小結 461
13.10 練習 463
第14章 曲面細分階段 468
14.1 曲面細分的圖元類型 469
14.2 外殼著色器 470
14.2.1 常量外殼著色器 470
14.2.2 控制點外殼著色器 473
14.3 鑲嵌器階段 474
14.3.1 四邊形面片的曲面細分示例 475
14.3.2 三角形面片的曲面細分示例 475
14.4 域著色器 476
14.5 對四邊形進行鑲嵌化處理 477
14.6 三次貝塞爾四邊形面片 481
14.6.1 貝茲曲線 482
14.6.2 三次貝塞爾曲面 484
14.6.3 計算三次貝塞爾曲面的相關代碼 485
14.6.4 定義面片的幾何形狀 487
14.7 小結 489
14.8 練習 490

第三部分 主題篇

第15章 構建第 一人稱視角的攝像機與動態索引 493
15.1 重溫取景變換 493
15.2 攝像機類 494
15.3 攝像機類中的方法實現選講 496
15.3.1 返回XMVECTOR類型變數的方法 496
15.3.2 SetLens方法 497
15.3.3 推導視錐體信息 497
15.3.4 與攝像機相關的變換操作 498
15.3.5 構建觀察矩陣 499
15.4 攝像機演示程式的若干注解 500
15.5 動態索引 502
15.6 小結 509
15.7 練習 509
第16章 產生實體與視錐體剔除 511
16.1 硬體產生實體 511
16.1.1 繪製實例資料 512
16.1.2 實例資料 512
16.1.3 創建實例緩衝區 517
16.2 包圍體與視錐體 519
16.2.1 DirectXMath碰撞檢測庫 520
16.2.2 包圍盒 520
16.2.3 包圍球 523
16.2.4 視錐體 524
16.3 視錐體剔除 529
16.4 小結 532
16.5 練習 533
第17章 拾取 535
17.1 螢幕空間到投影視窗的變換 536
17.2 位於世界空間與局部空間中的拾取射線 539
17.3 射線與網格的相交檢測 540
17.3.1 射線與軸對齊包圍盒的相交檢測 542
17.3.2 射線與球體的相交檢測 542
17.3.3 射線與三角形的相交檢測 543
17.4 應用常式 545
17.5 小結 546
17.6 練習 547
第18章 立方體貼圖 548
18.1 什麼是立方體貼圖 548
18.2 環境貼圖 549
18.3 繪製天空紋理 552
18.4 模擬反射 556
18.5 動態立方體圖 559
18.5.1 動態立方體圖輔助類 561
18.5.2 構建立方體圖資源 562
18.5.3 分配額外的描述符堆空間 562
18.5.4 構建描述符 564
18.5.5 構建深度緩衝區 565
18.5.6 立方體圖的視口與裁剪矩形 566
18.5.7 設置立方體圖攝像機 566
18.5.8 對立方體圖進行繪製 568
18.6 用幾何著色器繪製動態立方體圖 571
18.7 小結 574
18.8 練習 574
第19章 法線貼圖 577
19.1 使用法線貼圖的動機 577
19.2 什麼是法線貼圖 578
19.3 紋理空間/切線空間 580
19.4 頂點切線空間 582
19.5 在切線空間與物體空間之間進行轉換 583
19.6 法線貼圖的著色器代碼 584
19.7 小結 588
19.8 練習 589
第20章 陰影貼圖 591
20.1 渲染場景深度 591
20.2 正交投影 594
20.3 投影紋理座標 595
20.3.1 代碼實現 597
20.3.2 視錐體之外的點 598
20.3.3 正交投影 598
20.4 什麼是陰影貼圖 599
20.4.1 演算法描述 599
20.4.2 偏移與走樣 600
20.4.3 百分比漸近過濾 603
20.4.4 構建陰影圖 607
20.4.5 陰影因數 612
20.4.6 陰影圖檢測 614
20.4.7 渲染陰影圖 614
20.5 過大的PCF核 615
20.5.1 ddx函數與ddy函數 616
20.5.2 較大PCF核問題的解決方案 616
20.5.3 較大PCF核問題的另一種解決方案 618
20.6 小結 619
20.7 練習 620
第21章 環境光遮蔽 622
21.1 通過投射光線實現環境光遮蔽 623
21.2 螢幕空間環境光遮蔽 626
21.2.1 法線與深度值的渲染過程 626
21.2.2 環境光遮蔽的渲染過程 628
21.2.3 模糊過程 637
21.2.4 使用環境光遮蔽圖 641
21.3 小結 642
21.4 練習 642
第22章 四元數 644
22.1 複數回顧 644
22.1.1 定義 645
22.1.2 複數的幾何意義 645
22.1.3 極座標標記法與旋轉操作 646
22.2 四元數代數 647
22.2.1 定義與基本運算 647
22.2.2 特殊乘積 648
22.2.3 性質 648
22.2.4 轉換 649
22.2.5 共軛與範數 649
22.2.6 四元數的逆 650
22.2.7 極座標標記法 651
22.3 單位四元數及其旋轉操作 652
22.3.1 旋轉運算元 652
22.3.2 將四元數旋轉運算元轉換為
矩陣形式 654
22.3.3 將旋轉矩陣變換為四元數
旋轉運算元 655
22.3.4 複合 657
22.4 四元數插值 657
22.5 DirectX數學庫中與四元數有關的
函數 661
22.6 旋轉演示程式 662
22.7 小結 667
22.8 練習 667
第23章 角色動畫 670
23.1 框架層次 670
23.2 蒙皮網格 674
23.2.1 定義 674
23.2.2 重新推導將骨骼變換至根
坐標系的公式 674
23.2.3 偏移變換 675
23.2.4 驅動骨架運動 675
23.2.5 計算最終變換 677
23.3 頂點混合 679
23.4 從檔中載入動畫資料 682
23.4.1 文件頭 682
23.4.2 材質 683
23.4.3 子集 683
23.4.4 頂點數據與三角形 684
23.4.5 骨骼偏移變換 685
23.4.6 層次結構 685
23.4.7 動畫數據 686
23.4.8 M3DLoader類 688
23.5 角色動畫演示程式 689
23.6 小結 692
23.7 練習 694

附錄A Windows程式設計入門 695
A.1 概述 696
A.1.1 資源 696
A.1.2 事件、訊息佇列、消息以及
消息迴圈 696
A.1.3 圖形化使用者介面 698
A.1.4 Unicode 698
A.2 基本的Windows應用程式 699
A.3 講解基本Windows應用程式的
工作流程 702
A.3.1 程式中的標頭檔、全域變數
以及函式宣告 702
A.3.2 WinMain 703
A.3.3 WNDCLASS結構體與
實例註冊 704
A.3.4 創建並顯示視窗 705
A.3.5 消息迴圈 707
A.3.6 窗口過程 708
A.3.7 訊息方塊函數 710
A.4 一種更靈活的消息迴圈 710
A.5 小結 711
A.6 練習 711
附錄B 高級著色器語言參考 713
B.1 變數類型 713
B.1.1 標量類型 713
B.1.2 向量類型 713
B.1.3 矩陣類型 714
B.1.4 陣列 716
B.1.5 結構體 716
B.1.6 typedef關鍵字 716
B.1.7 變數的修飾符 717
B.1.8 強制類型轉換 717
B.2 關鍵字與運算子 718
B.2.1 關鍵字 718
B.2.2 運算子 718
B.3 程式中的控制流 720
B.4 函數 721
B.4.1 使用者自訂函數 721
B.4.2 內置函數 722
B.4.3 常量緩衝區的封裝規則 725
附錄C 解析幾何學選講 728
C.1 射線、直線以及線段 728
C.2 平行四邊形 729
C.3 三角形 729
C.4 平面 730
C.4.1 DirectX數學庫中平面的表示 731
C.4.2 空間點與平面的位置關係 731
C.4.3 構建平面 732
C.4.4 對平面進行規範化處理 733
C.4.5 對平面進行變換 733
C.4.6 平面內離指定點最近的點 734
C.4.7 射線與平面的相交檢測 734
C.4.8 反射向量 735
C.4.9 反射點 735
C.4.10 反射矩陣 736
C.5 練習 737
附錄D 參考資料 739
 

詳細資料

  • ISBN:9787115479211
  • 規格:平裝 / 742頁 / 16k / 19 x 26 x 3.71 cm / 普通級 / 單色印刷 / 1-1
  • 出版地:中國

最近瀏覽商品

 

相關活動

  • 【科普、電腦】高寶電子書暢銷書展:人生就是選擇的總和,全展75折起
 

購物說明

溫馨提醒您:若您訂單中有購買簡體館無庫存/預售書或庫存於海外廠商的書籍,建議與其他商品分開下單,以避免等待時間過長,謝謝。

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 翦商作者新作79折
  • 針灸匠張寶旬