出版時(shí)間:2010-1 出版社:周國(guó)慶、陳洪、 馮人果 清華大學(xué)出版社 (2010-01出版) 作者:周國(guó)慶 等 著 頁(yè)數(shù):365
Tag標(biāo)簽:無(wú)
前言
這是一本講述如何使用DirectX 9.0編寫(xiě)交互式三維計(jì)算機(jī)圖形程序的書(shū),重點(diǎn)在游戲開(kāi)發(fā)方面。將講述關(guān)于Direct3D的基礎(chǔ)知識(shí),使讀者能夠進(jìn)一步地學(xué)習(xí)和使用更高級(jí)的技術(shù)。當(dāng)讀者看完這本書(shū)的時(shí)候,對(duì)DirectX就會(huì)有一個(gè)大體的了解。 從程序員的角度看,DirectX是一個(gè)用于開(kāi)發(fā)Windows平臺(tái)下多媒體應(yīng)用程序的API(Application Programming Interfaces)函數(shù)的集合。 本書(shū)重點(diǎn)關(guān)注DirectX的一個(gè)重要子集——Direct3D。就像名字所描述的,Direct3D是一個(gè)用于開(kāi)發(fā)三維應(yīng)用程序的API的集合。當(dāng)然本書(shū)同時(shí)也涉及DirectX的其他內(nèi)容。 本書(shū)主要分為4個(gè)部分:第1部分主要介紹貫穿于本書(shū)的基本數(shù)學(xué)概念;第2部分將會(huì)介紹基本的3D技術(shù),例如光照、紋理、Alpha混合以及模板緩沖區(qū):第3部分主要講述如何通過(guò)Direct3D去實(shí)現(xiàn)多種有趣的技術(shù)和應(yīng)用程序,例如圖元選取(Picking)、地形渲染(Terrain Render)、粒子系統(tǒng)(Particle System)、通用虛擬攝像機(jī)(Camera)以及如何加載和渲染3D模型(.x文件);第4部分的主題是Vertex Shader、Pixel Shader以及特效框架和新的(在DirectX 9中首次出現(xiàn))高級(jí)Shader語(yǔ)言(HLSL)。 當(dāng)前和未來(lái)的三維計(jì)算機(jī)游戲會(huì)更多地運(yùn)用Shader技術(shù),所以這是一本與現(xiàn)行圖形編程密切相關(guān)的書(shū)。 1.對(duì)讀者的要求 本書(shū)屬于基礎(chǔ)性的圖書(shū),但是這并不表示本書(shū)適合于沒(méi)有任何編程經(jīng)驗(yàn)的讀者。本書(shū)要求讀者了解代數(shù)學(xué)、幾何學(xué)的知識(shí),熟悉游戲程序開(kāi)發(fā)環(huán)境(例如Visual C++),掌握C++語(yǔ)言以及鏈表和數(shù)組等基本的數(shù)據(jù)結(jié)構(gòu)知識(shí),如果讀者對(duì)Windows程序設(shè)計(jì)具有一定的了解,將更有助于閱讀本書(shū),不過(guò)這不是必需的。讀者可以通過(guò)附錄A對(duì)Windows程序設(shè)計(jì)有一個(gè)簡(jiǎn)單的認(rèn)識(shí)。
內(nèi)容概要
利用Direct3D進(jìn)行圖形程序開(kāi)發(fā)的核心技術(shù),從三維向量開(kāi)始,由淺入深,逐步講解3D圖形編程中的矩陣變換相關(guān)知識(shí)、投影知識(shí),及視口處理、裁剪處理、深度緩存的應(yīng)用技術(shù)。在高級(jí)繪圖技術(shù)中進(jìn)一步講解紋理處理、透明及混合技術(shù)的應(yīng)用、模板的應(yīng)用、光照及陰影技術(shù)、網(wǎng)格的應(yīng)用、利用網(wǎng)格技術(shù)處理模型顯示、在Direct3D程序中顯示文字、粒子系統(tǒng)的創(chuàng)建及應(yīng)用。書(shū)的后半部分講解游戲設(shè)計(jì)的高級(jí)特性,如攝像機(jī)封裝技術(shù)、地形顯示技術(shù)、場(chǎng)景中的模型撿取。最后講解GPU編程相關(guān)的知識(shí),讓用戶了解高級(jí)著色的相關(guān)內(nèi)容?! 禗irectX游戲編程》每章都以簡(jiǎn)單的實(shí)例來(lái)輔助對(duì)知識(shí)點(diǎn)的講解,力求深入淺出,知識(shí)由淺入深,難度是逐漸遞增的,另外《DirectX游戲編程》的章節(jié)之間沒(méi)有過(guò)分緊密的程序連接,所以有—定基礎(chǔ)的人員,可以選擇需要的章節(jié)單獨(dú)閱讀?! 禗irectX游戲編程》面向的群體為高校數(shù)字媒體藝術(shù)程序設(shè)計(jì)專業(yè)的學(xué)生,及自考學(xué)生,或有一定編程基礎(chǔ)的專業(yè)圖形編程人員。
書(shū)籍目錄
第1部分 必備的數(shù)學(xué)知識(shí)第1章 基本的數(shù)學(xué)概念 31.1 三維空間中的向量 31.1.1 向量的相等 61.1.2 向量模的計(jì)算 71.1.3 向量歸一化 81.1.4 向量加法 81.1.5 向量減法 91.1.6 數(shù)乘 101.1.7 點(diǎn)乘 101.1.8 叉乘 111.2 矩陣 121.2.1 矩陣的相等、矩陣數(shù)乘和矩陣加法 131.2.2 矩陣乘法 131.2.3 單位矩陣 151.2.4 逆矩陣 151.2.5 矩陣的轉(zhuǎn)置 161.2.6 D3DX中的矩陣 161.2.7 基本變換 191.2.8 平移變換 201.2.9 旋轉(zhuǎn)矩陣 211.2.10 縮放矩陣 231.2.11 組合變換 231.2.12 一些用于向量變換的函數(shù) 251.3 平面 251.3.1 D3DX中的平面 261.3.2 點(diǎn)和平面之間的關(guān)系 271.3.3 構(gòu)建平面 271.3.4 標(biāo)準(zhǔn)化一個(gè)平面 281.3.5 對(duì)平面進(jìn)行變換操作 291.3.6 求到一個(gè)指定點(diǎn)距離最短的平面上的點(diǎn) 291.4 射線 301.4.1 射線的表達(dá)式 301.4.2 射線與平面的相交 311.5 小結(jié) 31 第2部分 Direct3D基礎(chǔ)知識(shí)第2章 Direct3D初始化 352.1 Direct3D體系結(jié)構(gòu) 352.1.1 REF設(shè)備 362.1.2 D3D設(shè)備類型 362.2 組件對(duì)象模型 372.3 預(yù)備知識(shí) 372.3.1 表面緩沖區(qū)(Surface) 372.3.2 重采樣 392.3.3 像素格式 402.3.4 存儲(chǔ)池 402.3.5 交換鏈和頁(yè)面翻轉(zhuǎn) 412.3.6 深度緩沖區(qū) 422.3.7 頂點(diǎn)處理 432.3.8 設(shè)備性能 432.4 初始化Direct3D 442.4.1 獲得IDirect3D9接口 452.4.2 確認(rèn)硬件頂點(diǎn)處理能力 452.4.3 填充D3DPRESENT_ PARAMETERS結(jié)構(gòu) 462.4.4 創(chuàng)建一個(gè)IDirect3DDevice9接口 482.5 示例:初始化Direct3D 492.5.1 d3dUtility.h/cpp文件 502.5.2 程序框架 522.5.3 D3D初始化示例 522.6 小結(jié) 55第3章 渲染管道 573.1 描述的模型 573.1.1 頂點(diǎn)格式 583.1.2 三角形 593.1.3 索引 603.2 虛擬攝像機(jī) 603.3 渲染管道 613.3.1 本地空間 623.3.2 世界空間 623.3.3 視圖空間 633.3.4 背面裁剪 653.3.5 光照 663.3.6 裁剪 663.3.7 投影 673.3.8 視口變換 693.3.9 光柵化 703.4 小結(jié) 70第4章 在Direct3D中繪制圖形 714.1 頂點(diǎn)/索引緩沖區(qū) 714.1.1 創(chuàng)建頂點(diǎn)緩沖區(qū)和索引緩沖區(qū) 714.1.2 訪問(wèn)緩沖區(qū)內(nèi)存 744.1.3 獲得頂點(diǎn)緩沖區(qū)以及索引緩沖區(qū)的相關(guān)信息 754.2 渲染狀態(tài) 764.3 渲染前的準(zhǔn)備工作 774.4 使用頂點(diǎn)/索引緩沖區(qū)進(jìn)行渲染 784.4.1 IDirect3DDevice9::DrawPrimitive 784.4.2 IDirect3DDevice9::DrawIndexedPrimitive 784.4.3 Begin/End Scene 804.5 D3DX自帶的幾何物體 804.6 示例:三角形、立方體、茶壺、D3DXCreate* 814.7 小結(jié) 85第5章 顏色 875.1 顏色的描述方法 875.2 頂點(diǎn)顏色 905.3 著色處理 905.4 示例:帶顏色的三角形 915.5 小結(jié) 93第6章 光照 956.1 光的組成 956.2 材質(zhì) 966.3 頂點(diǎn)法線 986.4 光源 1006.5 示例:光照 1046.6 其他例子 1066.7 小結(jié) 107第7章 紋理 1097.1 紋理坐標(biāo) 1097.2 創(chuàng)建并應(yīng)用紋理 1117.3 紋理過(guò)濾 1127.4 多紋理映射 1137.4.1 多紋理映射過(guò)濾 1137.4.2 在Direct3D中使用多紋理映射 1147.5 紋理坐標(biāo)尋址模式 1147.6 程序示例:帶紋理的四邊形 1167.7 小結(jié) 118第8章 混合技術(shù) 1198.1 混合方程 1198.2 混合因子 1218.3 透明 1218.3.1 Alpha通道 1228.3.2 指定源像素的Alpha值 1228.4 用DirectX的紋理工具創(chuàng)建Alpha通道 1238.5 示例:透明效果 1248.6 小結(jié) 127第9章 模板緩沖區(qū) 1299.1 使用模板緩沖區(qū) 1309.1.1 獲取模板緩沖區(qū) 1318.1.2 模板測(cè)試 1319.1.3 模板測(cè)試的控制 1319.1.4 更新模板緩沖區(qū) 1339.1.5 模板寫(xiě)入掩碼 1349.2 示例:鏡子 1349.2.1 鏡面反射的相關(guān)數(shù)學(xué)知識(shí) 1349.2.2 鏡面效果的實(shí)現(xiàn)概述 1369.2.3 代碼和解釋 1379.3 示例:平面陰影 1409.3.1 平行光陰影 1419.3.2 點(diǎn)光源陰影 1429.3.3 陰影矩陣 1429.3.4 用模板緩沖區(qū)來(lái)防止二次混合 1439.3.5 代碼和解釋 1449.4 小結(jié) 146 第3部分 Direct3D的應(yīng)用第10章 文字處理 14910.1 ID3DXFont、ID3DXFont接口 14910.1.1 創(chuàng)建一個(gè)ID3DXFont接口 14910.1.2 文字輸出 15010.1.3 計(jì)算幀速(FPS) 15110.2 CD3DFont、CD3DFont類 15210.2.1 構(gòu)造CD3DFont對(duì)象 15210.2.2 DrawText輸出文字 15310.2.3 銷毀CD3DFont對(duì)象 15310.3 三維網(wǎng)格(3D Mesh)在文字顯示中的應(yīng)用 15410.3.1 D3DXCreateText方法 15410.4 小結(jié) 155第11章 網(wǎng)格(1) 15711.1 幾何信息 15711.2 網(wǎng)格子集(Subset)和屬性緩沖區(qū) 15811.3 網(wǎng)格的渲染 16011.4 網(wǎng)格優(yōu)化 16011.5 網(wǎng)格屬性表 16211.6 鄰接信息 16411.7 網(wǎng)格的克隆(Cloning) 16511.8 網(wǎng)格的創(chuàng)建 (D3DXCreateMeshFVF) 16611.9 示例:創(chuàng)建并渲染一個(gè)網(wǎng)格 16811.10 小結(jié) 173第12章 網(wǎng)格(2) 17512.1 ID3DXBuffer接口 17512.2 .X文件 17612.2.1 讀取.X文件 17712.2.2 X文件中的材質(zhì) 17812.2.3 X文件實(shí)例 17812.2.4 生成頂點(diǎn)法線 18112.3 漸進(jìn)式網(wǎng)格 18212.3.1 生成漸進(jìn)式網(wǎng)格 18312.3.2 頂點(diǎn)屬性權(quán)重 18412.3.3 ID3DXPMesh接口的相關(guān)方法 18512.3.4 示例:漸進(jìn)式網(wǎng)格 18612.4 包圍體 18912.4.1 新的常量 19112.4.2 各種不同的包圍體 19112.4.3 包圍體示例 19212.5 小結(jié) 194第13章 構(gòu)建一個(gè)靈活的攝像機(jī)類 19513.1 設(shè)計(jì)攝像機(jī) 19513.2 攝像機(jī)類的實(shí)現(xiàn)細(xì)節(jié) 19713.2.1 計(jì)算視圖矩陣 19713.2.2 繞任意軸的旋轉(zhuǎn) 20013.2.3 俯仰、偏轉(zhuǎn)和翻滾 20013.2.4 行走、平移和飛行 20313.3 示例:攝像機(jī) 20413.4 小結(jié) 206第14章 基本地形渲染 20714.1 高度圖 20814.1.1 高度圖的創(chuàng)建 20814.1.2 讀取RAW文件 20914.1.3 高度圖的訪問(wèn)和修改 21014.2 生成地形幾何數(shù)據(jù) 21014.2.1 計(jì)算頂點(diǎn) 21214.2.2 計(jì)算索引——定義三角形 21414.3 紋理 21614.3.1 用程序生成紋理數(shù)據(jù) 21614.4 光照 21814.4.1 概述 21914.4.2 計(jì)算方格的陰影 21914.4.3 計(jì)算地形陰影 22114.5 在地形上“行走” 22114.6 Terrain示例程序 22514.7 一些改進(jìn)措施 22614.8 小結(jié) 227第15章 粒子系統(tǒng) 22915.1 粒子和點(diǎn)精靈 22915.1.1 結(jié)構(gòu)格式 23015.1.2 Point Sprite渲染狀態(tài) 23015.1.3 粒子及其屬性 23215.2 粒子系統(tǒng)組件 23315.2.1 粒子系統(tǒng)的渲染 23815.2.2 粒子的隨機(jī)性 24115.3 實(shí)現(xiàn)三個(gè)具體的粒子系統(tǒng):雪景、焰火和粒子槍 24215.3.1 示例:雪景 24215.3.2 示例:焰火 24415.3.3 示例:粒子槍 24615.4 小結(jié) 248第16章 撿取 24916.1 屏幕到投影窗口的變換 25116.2 計(jì)算Picking射線 25216.3 變換射線 25316.4 射線與物體的相交檢測(cè) 25416.5 示例:Picking 25616.6 小結(jié) 257第4部分 Shader和特效第17章 高級(jí)Shader語(yǔ)言的介紹 26117.1 使用HLSL編寫(xiě)Shader程序 26217.1.1 全局變量 26317.1.2 輸入輸出結(jié)構(gòu) 26417.1.3 入口點(diǎn)函數(shù) 26517.2 編譯一個(gè)HLSL Shader程序 26617.2.1 常量表 26617.2.2 編譯HLSL Shader程序 27017.3 變量類型 27217.3.1 標(biāo)量類型 27217.3.2 向量類型 27217.3.3 矩陣類型 27317.3.4 數(shù)組 27517.3.5 結(jié)構(gòu) 27517.3.6 typedef關(guān)鍵字 27617.3.7 變量前綴 27617.4 關(guān)鍵字、語(yǔ)句和類型轉(zhuǎn)換 27717.4.1 關(guān)鍵字 27717.4.2 基本的程序流程 27717.4.3 類型轉(zhuǎn)換 27817.5 運(yùn)算符 27917.6 用戶自定義函數(shù) 28017.7 內(nèi)建函數(shù) 28217.8 小結(jié) 284第18章 Vertex Shader的介紹 28518.1 頂點(diǎn)聲明(Vertex Declaration) 28618.1.1 頂點(diǎn)聲明的描述 28618.1.2 創(chuàng)建頂點(diǎn)聲明 28918.1.3 啟用一個(gè)頂點(diǎn)聲明 28918.2 頂點(diǎn)數(shù)據(jù)的用途 29018.3 使用Vertex Shader的步驟 29218.3.1 編寫(xiě)與編譯 Vertex Shader 29218.3.2 創(chuàng)建Vertex Shader 29218.3.3 設(shè)置Vertex Shader 29318.3.4 銷毀Vertex Shader 29318.4 示例:散射光 29318.5 示例:卡通渲染 (Cartoon Rendering) 29918.5.1 卡通著色 (Cartoon Shading) 30018.5.2 卡通著色的Vertex Shader 代碼 30118.5.3 勾畫(huà)出物體的輪廓 30318.6 小結(jié) 308第19章 Pixel Shader入門(mén) 30919.1 多重紋理概述 30919.1.1 啟用多重紋理 31119.1.2 多重紋理坐標(biāo) 31219.2 Pixel Shader的輸入和輸出 31319.3 使用Pixel Shader的步驟 31419.3.1 編寫(xiě)并編譯Pixel Shader 程序 31419.3.2 創(chuàng)建一個(gè)Pixel Shader 31419.3.3 設(shè)置一個(gè)Pixel Shader 31519.3.4 銷毀一個(gè)Pixel Shader 31519.4 HLSL取樣對(duì)象 31519.5 示例:通過(guò)Pixel Shader實(shí)現(xiàn) 多重紋理 31719.6 小結(jié) 324第20章 特效框架 (Effects Framework) 32520.1 Technique與Pass 32620.2 更多的HLSL內(nèi)建對(duì)象 32720.2.1 texture對(duì)象 32720.2.2 取樣器(sampler)對(duì)象和取樣器狀態(tài) 32820.2.3 Vertex Shader對(duì)象和Pixel Shader對(duì)象 32820.2.4 字符串(string) 32920.2.5 注解(Annotations) 33020.3 特效文件中的設(shè)備狀態(tài) 33020.4 創(chuàng)建一個(gè)特效 33120.5 設(shè)置常量 33320.6 使用特效 33520.6.1 獲得特效句柄 33520.6.2 激活特效 33620.6.3 啟用特效 33620.6.4 設(shè)置當(dāng)前的渲染Pass 33720.6.5 關(guān)閉特效 33720.6.6 示例 33720.7 示例:通過(guò)特效文件實(shí)現(xiàn)光照效果和紋理貼圖 33820.8 示例:霧化效果 34320.9 示例:卡通效果 34520.10 特效編輯器(EffectEdit) 34720.11 小結(jié) 347附錄A Windows程序設(shè)計(jì)簡(jiǎn)介 349A.1 概述 349A.1.1 資源 350A.1.2 事件、消息隊(duì)列、消息和消息循環(huán) 350A.1.3 圖形用戶接口(GUI) 351A.2 簡(jiǎn)單的Windows應(yīng)用程序 352A.3 一個(gè)更好的消息循環(huán) 364A.4 小結(jié) 365參考文獻(xiàn) 366
章節(jié)摘錄
插圖:在現(xiàn)實(shí)中的許多表面都類似于鏡面,可以在這些表面上看到物體的影像。在本節(jié)中將講述如何在三維場(chǎng)景中模擬鏡面效果。為了減少問(wèn)題的復(fù)雜性,這里只實(shí)現(xiàn)簡(jiǎn)單的平面鏡面效果。例如,一輛擦亮的轎車也可以反射出物體的影像,但轎車的車身是平滑的弧形表面,而不是一個(gè)簡(jiǎn)單的平面。這里模擬的反射現(xiàn)象類似于擦亮的大理石地板或者是掛在墻上的鏡子,它們也可以反射物體的影像,一句話,本節(jié)只討論平面的鏡面效果。在程序中實(shí)現(xiàn)鏡子的功能需要解決兩個(gè)問(wèn)題。第一,必須知道如何求出對(duì)于一個(gè)任意表面的對(duì)稱物體,然后才可以正確地畫(huà)出反射的物體。第二,只能在鏡子中顯示反射的物體影像。也就是說(shuō),必須把某個(gè)表面標(biāo)記為鏡子,表明如果反射的物體影像位于鏡子平面中才會(huì)對(duì)它進(jìn)行渲染。第一個(gè)問(wèn)題通過(guò)一些向量的幾何知識(shí)來(lái)解決,使用模板緩沖區(qū)可以解決第二個(gè)問(wèn)題。以下兩個(gè)小節(jié)中將分別解釋如何解決這兩個(gè)問(wèn)題,第三個(gè)小節(jié)將兩個(gè)問(wèn)題綜合在一起,然后討論本章的第一個(gè)簡(jiǎn)單例子“鏡面效果”的相關(guān)代碼。
編輯推薦
本教材是網(wǎng)絡(luò)游戲編程的專業(yè)課程。《DirectX游戲編程》以游戲開(kāi)發(fā)中的圖形技術(shù)為主線,著重介紹如何使用DirectX9.0開(kāi)發(fā)交互式3D圖形程序。通過(guò)對(duì)DirectX的基本概念和使用的詳細(xì)描述,幫助學(xué)習(xí)者掌握游戲開(kāi)發(fā)界高級(jí)三維圖形技術(shù),為成為優(yōu)秀游戲圖形工程師打好基礎(chǔ)。第九藝術(shù)學(xué)院叢書(shū)作為RGDC游戲開(kāi)發(fā)課程體系配套教材,由遞歸教育組織力量,集國(guó)內(nèi)外游戲業(yè)內(nèi)精英人才打造而成。全套叢書(shū)共包括:游戲開(kāi)發(fā)基礎(chǔ)、游戲美術(shù)設(shè)計(jì)、游戲程序開(kāi)發(fā)3個(gè)部分。游戲開(kāi)發(fā)核心技術(shù)深度剖析計(jì)算機(jī)圖形API游戲開(kāi)發(fā)真體驗(yàn)中國(guó)文化創(chuàng)意產(chǎn)業(yè)技術(shù)創(chuàng)新聯(lián)盟中國(guó)電影電視技術(shù)學(xué)會(huì)數(shù)字特效與三維動(dòng)畫(huà)專業(yè)委員會(huì)中國(guó)系統(tǒng)仿真學(xué)會(huì)數(shù)字娛樂(lè)專業(yè)委員會(huì)推薦教材
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版