內容簡介
《3D遊戲編程大師技巧(套裝上下冊)》是遊戲編程暢銷書作者André LaMothe的扛鼎之作,從遊戲編程和軟件引擎的角度深入探討瞭3D圖形學的各個重要主題。全書共分5部分,包括16章的內容。第1~3章簡要地介紹瞭Windows和DirectX編程,創建瞭一個Windows應用程序模闆,讓讀者能夠將精力放在遊戲邏輯和圖形實現中,而不用考慮Windows和DirectX方麵的瑣事;第4~5章簡要地介紹瞭一些數學知識並實現瞭一個數學庫,供以後編寫演示程序時使用;第6章概述瞭3D圖形學,讓讀者對之後即將介紹的內容有大緻的瞭解;第7~11章分彆介紹瞭光照、明暗處理、仿射紋理映射、3D裁剪和深度緩存等內容;第12~14章討論瞭高級3D渲染技術,包括透視修正紋理映射、Alpha混閤、1/z緩存、紋理濾波、空間劃分和可見性算法、陰影、光照映射等;第15~16章討論瞭動畫、運動碰撞檢測和優化技術。
《3D遊戲編程大師技巧(套裝上下冊)》適閤於有一定編程經驗並想從事遊戲編程工作或對3D圖形學感興趣的人員閱讀。
目錄
第一部分 3D遊戲編程簡介
第1章 3D遊戲編程入門
1.1 簡介
1.2 2D/3D遊戲的元素
1.2.1 初始化
1.2.2 進入遊戲循環
1.2.3 讀取玩傢輸入
1.2.4 執行AI和遊戲邏輯
1.2.5 渲染下一幀
1.2.6 同步顯示
1.2.7 循環
1.2.8 關閉
1.3 通用遊戲編程指南
1.4 使用工具
1.4.1 3D關卡編輯器
1.4.2 使用編譯器
1.5 一個3D遊戲範例:Raiders 3D
1.5.1 事件循環
1.5.2 核心3D遊戲邏輯
1.5.3 3D投影
1.5.4 星空
1.5.5 激光炮和碰撞檢測
1.5.6 爆炸
1.5.7 玩Raiders3D
1.6 總結
第2章 Windows和DirectX簡明教程
2.1 Win32編程模型
2.2 Windows程序的最小需求
2.3 一個基本的Windows應用程序
2.3.1 Windows類
2.3.2 注冊Windows類
2.3.3 創建窗口
2.3.4 事件處理程序
2.3.5 主事件循環
2.3.6 構建實時事件循環
2.4 DirectX和COM簡明教程
2.4.1 HEL和HAL
2.4.2 DirectX基本類
2.5 COM簡介
2.5.1 什麼是COM對象
2.5.2 創建和使用DirectX COM接口
2.5.3 查詢接口
2.6 總結
第3章 使用虛擬計算機進行3D遊戲編程
3.1 虛擬計算機接口簡介
3.2 建立虛擬計算機接口
3.2.1 幀緩存和視頻係統
3.2.2 使用顔色
3.2.3 緩存交換
3.2.4 完整的虛擬圖形係統
3.2.5 I/O、聲音和音樂
3.3 T3DLIB遊戲控製颱
3.3.1 T3DLIB係統概述
3.3.2 基本遊戲控製颱
3.4 T3DLIB1庫
3.4.1 DirectX圖形引擎體係結構
3.4.2 基本常量
3.4.3 工作宏
3.4.4 數據類型和結構
3.4.5 函數原型
3.4.6 全局變量
3.4.7 DirectDraw接口
3.4.8 2D多邊形函數
3.4.9 數學函數和錯誤函數
3.4.10 位圖函數
3.4.11 8位調色闆函數
3.4.12 實用函數
3.4.13 BOB(Blitter對象)引擎
3.5 T3DLIB2 DirectX輸入係統
3.6 T3DLIB3聲音和音樂庫
3.6.1 頭文件
3.6.2 類型
3.6.3 全局變量
3.6.4 DirectSound API封裝函數
3.6.5 DirectMusic API封裝函數
3.7 建立最終的T3D遊戲控製颱
3.7.1 映射真實圖形到虛擬接口的非真實圖形
3.7.2 最終的T3DLIB遊戲控製颱
3.8 範例T3LIB應用程序
3.8.1 窗口應用程序
3.8.2 全屏應用程序
3.8.3 聲音和音樂
3.8.4 處理輸入
3.9 總結
第二部分 3D數學和變換
第4章 三角學、嚮量、矩陣和四元數
4.1 數學錶示法
4.2 2D坐標係
4.2.1 2D笛卡爾坐標
4.2.2 2D極坐標
4.3 3D坐標係
4.3.1 3D笛卡爾坐標
4.3.2 3D柱麵坐標
4.3.3 3D球麵坐標
4.4 三角學
4.4.1 直角三角形
4.4.2 反三角函數
4.4.3 三角恒等式
4.5 嚮量
4.5.1 嚮量長度
4.5.2 歸一化
4.5.3 嚮量和標量的乘法
4.5.4 嚮量加法
4.5.5 嚮量減法
4.5.6 點積
4.5.7 叉積
4.5.8 零嚮量
4.5.9 位置和位移嚮量
4.5.10 用綫性組閤錶示的嚮量
4.6 矩陣和綫性代數
4.6.1 單位矩陣
4.6.2 矩陣加法
4.6.3 矩陣的轉置
4.6.4 矩陣乘法
4.6.5 矩陣運算滿足的定律
4.7 逆矩陣和方程組求解
4.7.1 剋來姆法則
4.7.2 使用矩陣進行變換
4.7.3 齊次坐標
4.7.4 應用矩陣變換
4.8 基本幾何實體
4.8.1 點
4.8.2 直綫
4.8.3 平麵
4.9 使用參數化方程
4.9.1 2D參數化直綫
4.9.2 3D參數化直綫
4.10 四元數簡介
4.10.1 復數理論
4.10.2 超復數
4.10.3 四元數的應用
4.11 總結
第5章 建立數學引擎
5.1 數學引擎概述
5.1.1 數學引擎的文件結構
5.1.2 命名規則
5.1.3 錯誤處理
5.1.4 關於C++的最後說明
5.2 數據結構和類型
5.2.1 嚮量和點
5.2.2 參數化直綫
5.2.3 3D平麵
5.2.4 矩陣
5.2.5 四元數
5.2.6 角坐標係支持
5.2.7 2D極坐標
5.2.8 3D柱麵坐標
5.2.9 3D球麵坐標
5.2.10 定點數
5.3 數學常量
5.4 宏和內聯函數
5.4.1 通用宏
5.4.2 點和嚮量宏
5.4.3 矩陣宏
5.4.4 四元數
5.4.5 定點數宏
5.5 函數原型
5.6 全局變量
5.7 數學引擎API清單
5.7.1 三角函數
5.7.2 坐標係支持函數
5.7.3 嚮量支持函數
5.7.4 矩陣支持函數
5.7.5 2D和3D參數化直綫支持函數
5.7.6 3D平麵支持函數
5.7.7 四元數支持函數
5.7.8 定點數支持函數
5.7.9 方程求解支持函數
5.8 浮點單元運算初步
5.8.1 FPU體係結構
5.8.2 FPU堆棧
5.8.3 FPU指令集
5.8.4 經典指令格式
5.8.5 內存指令格式
5.8.6 寄存器指令格式
5.8.7 寄存器彈齣指令格式
5.8.8 FPU範例
5.8.9 FLD範例
5.8.10 FST範例
5.8.11 FADD範例
5.8.12 FSUB範例
5.8.13 FMUL範例
5.8.14 FDIV範例
5.9 數學引擎使用說明遊戲控製颱
5.10 關於數學優化的說明
5.11 總結
第6章 3D圖形學簡介
6.1 3D引擎原理
6.2 3D遊戲引擎的結構
6.2.1 3D引擎
6.2.2 遊戲引擎
6.2.3 輸入係統和網絡
6.2.4 動畫係統
6.2.5 碰撞檢測和導航係統
6.2.6 物理引擎
6.2.7 人工智能係統
6.2.8 3D模型和圖像數據庫
6.3 3D坐標係
6.3.1 模型(局部)坐標
6.3.2 世界坐標
6.3.3 相機坐標
6.3.4 有關相機坐標的說明
6.3.5 隱藏物體(麵)消除和裁剪
6.3.6 透視坐標
6.3.7 流水綫終點:屏幕坐標
6.4 基本的3D數據結構
6.4.1 錶示3D多邊形數據時需要考慮的問題
6.4.2 定義多邊形
6.4.3 定義物體
6.4.4 錶示世界
6.5 3D工具
動畫數據和運動數據
6.6 從外部加載數據
6.6.1 PLG文件
6.6.2 NFF文件
6.6.3 3D Studio文件
6.6.4 Caligari COB文件
6.6.5 Microsoft DirectX .X文件
6.6.6 3D文件格式小結
6.7 基本剛性變換和動畫
6.7.1 3D平移
6.7.2 3D鏇轉
6.7.3 3D變形
6.8 再看觀察流水綫
6.9 3D引擎類型
6.9.1 太空引擎
6.9.2 地形引擎
6.9.3 FPS室內引擎
6.9.4 光綫投射和體素引擎
6.9.5 混閤引擎
6.10 將各種功能集成到引擎中
6.11 總結
第7章 渲染3D綫框世界
7.1 綫框引擎的總體體係結構
7.1.1 數據結構和3D流水綫
7.1.2 主多邊形列錶
7.1.3 新的軟件模塊
7.2 編寫3D文件加載器
7.3 構建3D流水綫
7.3.1 通用變換函數
7.3.2 局部坐標到世界坐標變換
7.3.3 歐拉相機模型
7.3.4 UVN相機模型
7.3.5 世界坐標到相機坐標變換
7.3.6 物體剔除
7.3.7 背麵消除
7.3.8 相機坐標到透視坐標變換
7.3.9 透視坐標到屏幕(視口)坐標變換
7.3.10 閤並透視變換和屏幕變換
7.4 渲染3D世界
7.5 3D演示程序
7.5.1 單個3D三角形
7.5.2 3D綫框立方體
7.5.3 消除瞭背麵的3D綫框立方體
7.5.4 3D坦剋演示程序
7.5.5 相機移動的3D坦剋演示程序
7.5.6 戰區漫步演示程序
7.6 總結
第三部分 基本3D渲染
第8章 基本光照和實體造型
8.1 計算機圖形學的基本光照模型
8.1.1 顔色模型和材質
8.1.2 光源類型
8.2 三角形的光照計算和光柵化
8.2.1 為光照做準備
8.2.2 定義材質
8.2.3 定義光源
8.3 真實世界中的著色
8.3.1 16位著色
8.3.2 8位著色
8.3.3 一個健壯的用於8位模式的RGB模型
8.3.4 一個簡化的用於8位模式的強度模型
8.3.5 固定著色
8.3.6 恒定著色
8.3.7 Gouraud著色概述
8.3.8 Phong著色概述
8.4 深度排序和畫傢算法
8.5 使用新的模型格式
8.5.1 分析器類
8.5.2 輔助函數
8.5.3 3D Studio MAX ASCII格式.ASC
8.5.4 TrueSpace ASCII.COB格式
8.5.5 Quake II二進製.MD2格式概述
8.6 3D建模工具簡介
8.7 總結
第9章 插值著色技術和仿射紋理映射
9.1 新T3D引擎的特性
9.2 更新T3D數據結構和設計
9.2.1 新的#defines
9.2.2 新增的數學結構
9.2.3 實用宏
9.2.4 添加錶示3D網格數據的特性
9.2.5 更新物體結構和渲染列錶結構
9.2.6 函數清單和原型
9.3 重新編寫物體加載函數
9.3.1 更新.PLG/PLX加載函數
9.3.2 更新3D Studio .ASC加載函數
9.3.3 更新Caligari .COB加載函數
9.4 迴顧多邊形的光柵化
9.4.1 三角形的光柵化
9.4.2 填充規則
9.4.3 裁剪
9.4.4 新的三角形渲染函數
9.4.5 優化
9.5 實現Gouraud著色處理
9.5.1 沒有光照時的Gouraud著色
9.5.2 對使用Gouraud Shader的多邊形執行光照計算
9.6 基本采樣理論
9.6.1 一維空間中的采樣
9.6.2 雙綫性插值
9.6.3 u和v的插值
9.6.4 實現仿射紋理映射
9.7 更新光照/光柵化引擎以支持紋理
9.8 對8位和16位模式下優化策略的最後思考
9.8.1 查找錶
9.8.2 網格的頂點結閤性
9.8.3 存儲計算結果
9.8.4 SIMD
9.9 最後的演示程序
Raider 3D II
9.10 總結
第10章 3D裁剪
10.1 裁剪簡介
10.1.1 物體空間裁剪
10.1.2 圖像空間裁剪
10.2 裁剪算法
10.2.1 有關裁剪的基本知識
10.2.2 Cohen-Sutherland裁剪算法
10.2.3 Cyrus-Beck/梁友棟-Barsky裁剪算法
10.2.4 Weiler-Atherton裁剪算法
10.2.5 深入學習裁剪算法
10.3 實現視景體裁剪
10.3.1 幾何流水綫和數據結構
10.3.2 在引擎中加入裁剪功能
10.4 地形小議
10.4.1 地形生成函數
10.4.2 生成地形數據
10.4.3 沙地汽車演示程序
10.5 總結
第11章 深度緩存和可見性
11.1 深度緩存和可見性簡介
11.2 z緩存基礎
11.2.1 z緩存存在的問題
11.2.2 z緩存範例
11.2.3 平麵方程法
11.2.4 z坐標插值
11.2.5 z緩存中的問題和1/Z緩存
11.2.6 一個通過插值計算z和1/z的例子
11.3 創建z緩存係統
11.4 可能的z緩存優化
11.4.1 使用更少的內存
11.4.2 降低清空z緩存的頻率
11.4.3 混閤z緩存
11.5 z緩存存在的問題
11.6 軟件和z緩存演示程序
11.6.1 演示程序I:z緩存可視化
11.6.2 演示程序II:Wave Raider
11.7 總結
第四部分 高級3D渲染
第12章 高級紋理映射技術
12.1 紋理映射--第二波
12.2 新的光柵化函數
12.2.1 最終決定使用定點數
12.2.2 不使用z緩存的新光柵化函數
12.2.3 支持z緩存的新光柵化函數
12.3 使用Gouruad著色的紋理映射
12.4 透明度和alpha混閤
12.4.1 使用查找錶來進行alpha混閤
12.4.2 在物體級支持alpha混閤功能
12.4.3 在地形生成函數中加入alpha支持
12.5 透視修正紋理映射和1/z緩存
12.5.1 透視紋理映射的數學基礎
12.5.2 在光柵化函數中加入1/z緩存功能
12.5.3 實現完美透視修正紋理映射
12.5.4 實現綫性分段透視修正紋理映射
12.5.5 透視修正紋理映射的二次近似
12.5.6 使用混閤方法優化紋理映射
12.6 雙綫性紋理濾波
12.7 mipmapping和三綫性紋理濾波
12.7.1 傅立葉分析和走樣簡介
12.7.2 創建mip紋理鏈
12.7.3 選擇mip紋理
12.7.4 三綫性濾波
12.8 多次渲染和紋理映射
12.9 使用單個函數來完成渲染工作
12.9.1 新的渲染場境
12.9.2 設置渲染場境
12.9.3 調用對渲染場境進行渲染的函數
12.10 總結
第13章 空間劃分和可見性算法
13.1 新的遊戲引擎模塊
13.2 空間劃分和可見麵判定簡介
13.3 二元空間劃分
13.3.1 平行於坐標軸的二元空間劃分
13.3.2 任意平麵空間劃分
13.3.3 使用多邊形所在的平麵來劃分空間
13.3.4 顯示/訪問BSP樹中的每個節點
13.3.5 BSP樹數據結構和支持函數
13.3.6 創建BSP樹
13.3.7 分割策略
13.3.8 遍曆和顯示BSP樹
13.3.9 將BSP樹集成到圖形流水綫中
13.3.10 BSP關卡編輯器
13.3.11 BSP的局限性
13.3.12 使用BSP樹的零重繪策略
13.3.13 將BSP樹用於剔除
13.3.14 將BSP樹用於碰撞檢測
13.3.15 集成BSP樹和標準渲染
13.4 潛在可見集
13.4.1 使用潛在可見集
13.4.2 潛在可見集的其他編碼方法
13.4.3 流行的PVS計算方法
13.5 入口
13.6 包圍體層次結構和八叉樹
13.6.1 使用BHV樹
13.6.2 運行性能
13.6.3 選擇策略
13.6.4 實現BHV
13.6.5 八叉樹
13.7 遮掩剔除
13.7.1 遮掩體
13.7.2 選擇遮掩物
13.7.3 混閤型遮掩物選擇方法
13.8 總結
第14章 陰影和光照映射
14.1 新的遊戲引擎模塊
14.2 概述
14.3 簡化的陰影物理學
14.4 使用透視圖像和廣告牌來模擬陰影
14.4.1 編寫支持透明功能的光柵化函數
14.4.2 新的庫模塊
14.4.3 簡單陰影
14.4.4 縮放陰影
14.4.5 跟蹤光源
14.4.6 有關模擬陰影的最後思考
14.5 平麵網格陰影映射
14.5.1 計算投影變換
14.5.2 優化平麵陰影
14.6 光照映射和麵緩存技術簡介
14.6.1 麵緩存技術
14.6.2 生成光照圖
14.6.3 實現光照映射函數
14.6.4 暗映射(dark mapping)
14.6.5 光照圖特效
14.6.6 優化光照映射代碼
14.7 整理思路
14.8 總結
第五部分 高級動畫、物理建模和優化
第15章 3D角色動畫、運動和碰撞檢測
15.1 新的遊戲引擎模塊
15.2 3D動畫簡介
15.3 Quake II .MD2文件格式
15.3.1 .MD2文件頭
15.3.2 加載Quake II .MD2文件
15.3.3
3D遊戲編程大師技巧(套裝上下冊)(附CD光盤1張) 下載 mobi epub pdf txt 電子書