




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、DirectX程序設(shè)計(jì)課程期末復(fù)習(xí)資料第一章3D游戲開發(fā)的數(shù)學(xué)基礎(chǔ)本章包含的全部知識點(diǎn):l 點(diǎn)和向量l 直線與平面l 矩陣與坐標(biāo)變換l 坐標(biāo)系章節(jié)重點(diǎn):矩陣和坐標(biāo)變換第二章Windows編程基礎(chǔ)本章包含的全部知識點(diǎn):l 基本概念介紹l Windows程序結(jié)構(gòu)l Win32程序開發(fā)實(shí)例第3章 DirectX快速入門本章包含的全部知識點(diǎn):l DirectX概述l Direct3D 底層結(jié)構(gòu)概述l DirectX9.0的配置和安裝章節(jié)重點(diǎn):DirectX9.0的配置和安裝第4章 DirectX程序框架本章包含的全部知識點(diǎn):l Win32+C+Direct3D的基礎(chǔ)框架l DXUT框架章節(jié)重點(diǎn):Win
2、32+C+Direct3D的基礎(chǔ)框架第5章 文本顯示本章包含的全部知識點(diǎn):l 文本繪制流程l Win32程序框架實(shí)現(xiàn)l DXUT程序框架實(shí)現(xiàn)章節(jié)重點(diǎn): Win32程序框架實(shí)現(xiàn)第六章 基本圖形的繪制本章包含的全部知識點(diǎn):l 圖元l 靈活頂點(diǎn)格式(FVF)l 使用頂點(diǎn)緩存繪制圖形l 索引緩存l 顏色表示法l 渲染狀態(tài)l 繪制準(zhǔn)備l D3DX幾何物體l 實(shí)例設(shè)計(jì)與實(shí)現(xiàn)章節(jié)重點(diǎn):頂點(diǎn)緩存索引緩存第七章 變 換本章包含的全部知識點(diǎn):l 攝像機(jī)l 頂點(diǎn)變換l 光柵化l 實(shí)例章節(jié)重點(diǎn):頂點(diǎn)變換第八章 3D數(shù)學(xué)基礎(chǔ)補(bǔ)充本章包含的全部知識點(diǎn):l 常見坐標(biāo)系l 向量l 矩陣l 線性變換章節(jié)重點(diǎn):l 線性變換第九章
3、 光照和材質(zhì)本章包含的全部知識點(diǎn):l 真實(shí)感圖形基本概念l Direct3D中的光照l Direct3D中的材質(zhì)l 光照和材質(zhì)例子章節(jié)重點(diǎn): Direct3D中的光照Direct3D中的材質(zhì)第十章 紋理映射本章包含的全部知識點(diǎn):l 紋理貼圖l 紋理坐標(biāo)l 紋理尋址模式l 紋理過濾l 紋理混合狀態(tài)l 紋理實(shí)例解析章節(jié)重點(diǎn):紋理尋址模式紋理過濾第十一章 深度測試和反走樣本章包含的全部知識點(diǎn):l 深度緩存與深度測試l 圖形反走樣l 深度測試實(shí)例章節(jié)重點(diǎn):深度緩存與深度測試第十二章 網(wǎng)格(一)本章包含的全部知識點(diǎn):l ID3DXMeshl 子集和屬性緩存l 繪制l 鄰接信息l 優(yōu)化l 屬性表l 創(chuàng)建一
4、個(gè)Meshl 例子章節(jié)重點(diǎn):子集和屬性緩存創(chuàng)建一個(gè)Mesh第十三章 網(wǎng)格(二)本章包含的全部知識點(diǎn):l X文件格式解析l 讀取X文件l 漸進(jìn)網(wǎng)格l 漸進(jìn)網(wǎng)格例子章節(jié)重點(diǎn):深度緩存與深度測試第十四章 混合和模板本章包含的全部知識點(diǎn):l 混合因子l 混合計(jì)算l Alpha來源l Alpha混合實(shí)例l 模板章節(jié)重點(diǎn): Alpha混合實(shí)例第十五章 著色器入門本章包含的全部知識點(diǎn):l 著色器概述l HLSL的變量l HLSL的函數(shù)l HLSL基本語法l 在Direct3D中使用HLSL章節(jié)重點(diǎn): Alpha混合實(shí)例第十六章 頂點(diǎn)著色器本章包含的全部知識點(diǎn):l 頂點(diǎn)著色器概述l 頂點(diǎn)聲明l 使用頂點(diǎn)著色器
5、l 頂點(diǎn)著色器實(shí)例第十七章 像素著色器本章包含的全部知識點(diǎn):l 像素著色器概述l 使用像素著色器l HLSL采樣器對象l 多重紋理l 例子程序一、客觀部分:(單項(xiàng)選擇、多項(xiàng)選擇、不定項(xiàng)選擇、判斷)(一)、選擇部分1. D3DPRESENT_PARAMETERS參數(shù)很多,關(guān)于其中參數(shù)之一windowed的理解正確的是( ABD )A.取值FALSE則渲染全屏 B.取值TRUE則渲染窗口 C. int類型 D.BOOL類型 E.double類型考核知識點(diǎn): D3DPRESENT_PARAMETERS2. 以下屬于Direct 3D定義的圖元類型的有( ABCD )A.點(diǎn)列表 B.線段條帶 C.三角
6、形列表 D.三角形條帶 E.四邊形列表考核知識點(diǎn): 圖元3. 以下屬于Direct 3D提供的著色模式的是( AB )A.平面著色模式 B.高洛德法著色模式 C.漸變著色模式 D.單顏色著色模式 考核知識點(diǎn): 著色模式4. 下面屬于Direct3D提供的創(chuàng)建旋轉(zhuǎn)矩陣的函數(shù)的是( ABC )A. D3DXMatrixRotarionX B. D3DXMatrixRotarionY C. D3DXMatrixRotarionZ D. D3DXMatrixRotX E. D3DXMatrixRotY考核知識點(diǎn): 變換5. 以下屬于Direct3D提供的簡化紋理過濾的過程的是( ABCD )A.最近點(diǎn)
7、采樣 B.線性過濾 C.各向異性過濾 D.mipmap過濾 考核知識點(diǎn): 紋理過濾6. D3DPRESENT_PARAMETERS參數(shù)很多,下面理解正確的是( ABCD )A.Windowed取值FALSE則渲染全屏 B. BackBufferCount表示后備緩沖的數(shù)目C. SwapEffect表示交換緩沖類型 D. BackBufferFormat表示后備緩沖的格式考核知識點(diǎn): D3DPRESENT_PARAMETERS7. 以下屬于Direct3D中提供的標(biāo)準(zhǔn)光源的是( ABC )A. 點(diǎn)光源 B. 方向光源 C. 聚焦光源 D.多點(diǎn)光源 考核知識點(diǎn): 光源8. 關(guān)于靈活頂點(diǎn)格式下列說法
8、正確的是( ABD )A. D3DFVF_DIFFUSE表示頂點(diǎn)數(shù)據(jù)中包含的是漫反射顏色值; B. D3DFVF_SPECULAR表示頂點(diǎn)數(shù)據(jù)中包含的是鏡面反射下的顏色值 C. D3DFVF_XYZRHW表示頂點(diǎn)數(shù)據(jù)中包含的是未經(jīng)過坐標(biāo)變換的頂點(diǎn)坐標(biāo) D. D3DFVF_XYZ頂點(diǎn)數(shù)據(jù)中包含未經(jīng)坐標(biāo)變換的頂點(diǎn)坐標(biāo)考核知識點(diǎn): 靈活頂點(diǎn)格式解析:C項(xiàng)應(yīng)該是經(jīng)過坐標(biāo)變換后的頂點(diǎn)坐標(biāo)9. 關(guān)于頂點(diǎn)Alpha描述正確的是( AB )A. 如果在程序中直接指定每個(gè)頂點(diǎn)的顏色,直接給出每個(gè)頂點(diǎn)顏色的Alpha值。B. 渲染對象中每個(gè)像素的Alpha值由該對象的Alpha值和著色模式?jīng)Q定。C. 高洛德著色模
9、式,所有像素的Alpha值都等于該多邊形的第一個(gè)頂點(diǎn)的Alpha值。D. 平面著色模式,每個(gè)多邊形上的像素的Alpha值由它的各個(gè)頂點(diǎn)的Alpha值進(jìn)行線性插值得到??己酥R點(diǎn): 頂點(diǎn)Alpha解析:C項(xiàng)應(yīng)該是平面著色模式,所有像素的Alpha值都等于該多邊形的第一個(gè)頂點(diǎn)的Alpha值。D項(xiàng)應(yīng)該是高洛德著色模式,每個(gè)多邊形上的像素的Alpha值由它的各個(gè)頂點(diǎn)的Alpha值進(jìn)行線性插值得到。(二)、判斷部分1. Direct3D將給每個(gè)采樣器對象連接一個(gè)唯一的紋理階段(stage),在應(yīng)用程序中找出與采樣器對象相關(guān)聯(lián)的階段,并設(shè)置相應(yīng)的紋理和采樣器狀態(tài)給該階段。 ( 正確 )考核知識點(diǎn): 紋理2
10、. 一個(gè)Direct3D對象只能創(chuàng)建一個(gè)Direct3D設(shè)備對象。 ( 錯(cuò)誤 )考核知識點(diǎn): Direct3D設(shè)備對象考核知識點(diǎn)解釋一個(gè)Direct3D對象可以創(chuàng)建多個(gè)Direct3D設(shè)備對象。3. 由于Direct3D設(shè)備對象是由Direct3D對象創(chuàng)建的,因此應(yīng)先釋放Direct3D設(shè)備對象。(正確)考核知識點(diǎn): Direct3D對象及設(shè)備對象4. D3DFVF_XYZ頂點(diǎn)數(shù)據(jù)中包含未經(jīng)坐標(biāo)變換的頂點(diǎn)坐標(biāo),不能與D3DFVF_XYZRHW同時(shí)使用。(正確)考核知識點(diǎn): 靈活頂點(diǎn)格式5. D3DFVF_XYZ頂點(diǎn)數(shù)據(jù)中包含未經(jīng)坐標(biāo)變換的頂點(diǎn)坐標(biāo),可以與D3DFVF_XYZRHW同時(shí)使用。(錯(cuò)
11、誤)考核知識點(diǎn): 靈活頂點(diǎn)格式考核知識點(diǎn)解釋D3DFVF_XYZ頂點(diǎn)數(shù)據(jù)中包含未經(jīng)坐標(biāo)變換的頂點(diǎn)坐標(biāo),不可以與D3DFVF_XYZRHW同時(shí)使用。6. D3DFVF_XYZRHW頂點(diǎn)數(shù)據(jù)中包含經(jīng)過坐標(biāo)變換的頂點(diǎn)坐標(biāo),不能與D3DFVF_XYZ和D3DFVF_NORMAL同時(shí)使用。(正確)考核知識點(diǎn): 靈活頂點(diǎn)格式7. Direct3D創(chuàng)建的場景和對象都是由簡單的“圖元”按照一定的方式排列組合而成的,Direct3D中的所有圖元都是一維或二維對象,包括單個(gè)的點(diǎn)和直線及復(fù)雜的多邊形。(正確)考核知識點(diǎn): 圖元8. 在索引緩存中定位頂點(diǎn)也就是在頂點(diǎn)緩存中定位頂點(diǎn)。(正確)考核知識點(diǎn): 頂點(diǎn)緩存索引緩
12、存二、主觀部分:(一)、填空部分1) 像素著色器的輸入僅有顏色和紋理坐標(biāo)兩種語義??己酥R點(diǎn): 像素著色器2) 像素著色器的工作是在頂點(diǎn)著色器之后,后者的輸出將為前者提供輸入。 考核知識點(diǎn): 像素著色器3) D3DFVF_DIFFUSE表示頂點(diǎn)數(shù)據(jù)中包含的是漫反射顏色值;考核知識點(diǎn): 靈活頂點(diǎn)格式4) D3DFVF_SPECULAR表示頂點(diǎn)數(shù)據(jù)中包含的是鏡面反射下的顏色值;考核知識點(diǎn): 靈活頂點(diǎn)格式5) D3DFVF_XYZRHW表示頂點(diǎn)數(shù)據(jù)中包含的是經(jīng)過坐標(biāo)變換的頂點(diǎn)坐標(biāo)考核知識點(diǎn): 靈活頂點(diǎn)格式6) Direct3DCreate9函數(shù)創(chuàng)建一個(gè)Direct3D對象并獲得指向Direct3D對
13、象接口的指針,且參數(shù)必須設(shè)置為D3D_SDK_VERSION。考核知識點(diǎn): Direct3D對象7) DXUT(The DirectX Utility Library)是建立在Direct3D9和Direct3D10上的一個(gè)程序框架,其目標(biāo)是建立一個(gè)強(qiáng)大而容易使用的Direct3D游戲開發(fā)框架,它簡化了Win32和Direct3D API的使用??己酥R點(diǎn): DXUT8) 創(chuàng)建DirectX設(shè)備對象的函數(shù)為CreateDevice??己酥R點(diǎn): 設(shè)備對象9) Direct3D圖形程序通過調(diào)用IDirect3DDevice9:SetRenderState()函數(shù)來設(shè)置渲染狀態(tài)。考核知識點(diǎn): 設(shè)置
14、渲染狀態(tài)10) g_pd3dDevice-SetRenderState(D3DRS_SHADEMODE,D3DSHADE_FLAT),這行代碼完成的功能是( 設(shè)置著色模式為平面著色模式)??己酥R點(diǎn): 設(shè)置著色模式11) g_pd3dDevice-SetRenderState(D3DRS_SHADEMODE,D3DSHADE_GOURAUD),這行代碼完成的功能是( 設(shè)置著色模式為高洛德著色模式)??己酥R點(diǎn): 設(shè)置著色模式(二)、名詞解釋1、請你給出創(chuàng)建頂點(diǎn)聲明,并獲得IDirect3DVertexDeclaration9接口指針的方法??己酥R點(diǎn): 頂點(diǎn)聲明考核知識點(diǎn)解釋HRESULT I
15、Direct3DDevice9:CreateVertexDeclaration(CONST D3DVERTEXELEMENT9* pVertexElements, /要創(chuàng)建的頂點(diǎn)聲明 IDirect3DVertexDeclaration9* ppDecl/返回創(chuàng)建的IDirect3DVertexDeclaration9接/口指針 );2、請你給出環(huán)境光(ambient light)的概念,并說明如何設(shè)置渲染狀態(tài)為整個(gè)場景添加環(huán)境光??己酥R點(diǎn): 環(huán)境光考核知識點(diǎn)解釋環(huán)境光(ambient light)由光源發(fā)出經(jīng)環(huán)境多次散射而無法確定其方向的光,即好像是來自四面八方的光;室內(nèi)成分大,室外成分少
16、,沒有位置或方向上的特征,只有顏色亮度值,不會衰減;通過設(shè)置渲染狀態(tài)為整個(gè)場景添加環(huán)境光:g_device-SetRenderState(D3DRS_AMBIENT,D3DCOLOR_X#);3、請你給出鏡面反射光的概念,并說明如何設(shè)置渲染狀態(tài)。考核知識點(diǎn): 鏡面反射光考核知識點(diǎn)解釋鏡面光來自特定方向并被反射到特定方向;在默認(rèn)狀態(tài)下,Direct3D不對物體進(jìn)行鏡面反射計(jì)算,需設(shè)置相關(guān)的渲染狀態(tài):g_device-SetRenderState(D3DRS_SPECULARENABLE,TRUE);如果需要進(jìn)行漫反射或鏡面反射運(yùn)算,那么在頂點(diǎn)緩沖器中必須包含頂點(diǎn)的法向量信息;4、請給出設(shè)置像素著
17、色器的函數(shù)原型及調(diào)用示例代碼。考核知識點(diǎn): 像素著色器考核知識點(diǎn)解釋HRESULT IDirect3DDevice9:SetPixelShader(IDirect3DPixelShader9* pShader );這個(gè)方法只接受一個(gè)參數(shù),通過它傳遞一個(gè)我們要使用的指向像素著色器的指針。示例代碼如下: Device-SetPixelShader(MultiTexPS); 5、銷毀像素著色器接口函數(shù)原型考核知識點(diǎn): 像素著色器考核知識點(diǎn)解釋d3d:Release(MultiTexPS);6、在Direct3D的一個(gè)場景中,最多可設(shè)置幾個(gè)光源,設(shè)置函數(shù)形式??己酥R點(diǎn): 光源考核知識點(diǎn)解釋最多可設(shè)置
18、8個(gè)光源HRESULT SetLight(DWORD Index,CONST D3DLight9 *pLight );7、光照程序一般步驟??己酥R點(diǎn): 光照考核知識點(diǎn)解釋(1) 創(chuàng)建光源、設(shè)置其位置及相關(guān)屬性;SetLight函數(shù)將光源設(shè)置到渲染管道流水線中;LightEnable函數(shù)激活光源;(2) SetRenderState打開渲染管道流水線的光照開關(guān);(3) 創(chuàng)建材質(zhì),設(shè)置物體的材質(zhì)屬性,SetMaterial設(shè)定材質(zhì);8、請給出點(diǎn)列表圖元的含義,并說明其應(yīng)用??己酥R點(diǎn): 圖元考核知識點(diǎn)解釋點(diǎn)列表是一個(gè)對每點(diǎn)獨(dú)立進(jìn)行渲染的頂點(diǎn)集合。程序可以在3D場景中使用它模擬星空視野,或作為多邊
19、形表面的點(diǎn)化線。9、請給出線段列表圖元的含義,并說明其應(yīng)用??己酥R點(diǎn): 圖元考核知識點(diǎn)解釋線段列表是一系列的獨(dú)立線段,用于為3D場景加入冰雹或大雨等效果,線段列表中頂點(diǎn)的數(shù)量必須是大于等于2的偶數(shù)。10、請給出線段條帶圖元的含義,并說明其應(yīng)用??己酥R點(diǎn): 圖元考核知識點(diǎn)解釋線段條帶是一個(gè)由相互鏈接的線段組合成的造型,程序可以用它產(chǎn)生不封閉的多邊形;11、請給出三角形列表圖元的含義,并說明其應(yīng)用??己酥R點(diǎn): 圖元考核知識點(diǎn)解釋三角形列表是一系列獨(dú)立的三角形,它們之間可能靠的很近,也可能不是,頂點(diǎn)總數(shù)必須能被3整除;使用三角形列表建立一個(gè)由離散面片組成的物體;如建立力場墻的一種方法是指定一個(gè)
20、由互相不相連的小三角形組成的大型列表;然后將一個(gè)可以發(fā)散光線的材質(zhì)和紋理應(yīng)用到這個(gè)三角形列表上12、請給出三角形條帶圖元的含義,并說明其應(yīng)用??己酥R點(diǎn): 圖元考核知識點(diǎn)解釋三角形條帶是一連串相鄰接的三角形。3D場景中大部分物體都是由三角條帶組成的。13、請給出三角形扇圖元的含義,并說明其應(yīng)用??己酥R點(diǎn): 圖元考核知識點(diǎn)解釋三角形扇和三角形條帶類似,但其所有三角形共享一個(gè)頂點(diǎn)。3D場景中曲面的描述。14、請給出Direct3D中設(shè)置渲染狀態(tài)的函數(shù)原型,并解釋其參數(shù)含義。考核知識點(diǎn): 渲染狀態(tài)考核知識點(diǎn)解釋Direct3D圖形程序通過調(diào)用IDirect3DDevice9:SetRenderSt
21、ate()函數(shù)來設(shè)置渲染狀態(tài)。枚舉類型D3DRENDERSTATETYPE列舉出所有可能的渲染狀態(tài);使用SetRenderState()設(shè)置:HRESULT IDirect3DDevice9:SetRenderState(D3DRENDERSTATETYPE State,/更改的渲染狀態(tài)DWORD Value);/新的狀態(tài)值15、請你解釋平面著色模式的含義??己酥R點(diǎn): 著色模式考核知識點(diǎn)解釋Direct3D繪制流水線使用多邊形第一個(gè)頂點(diǎn)的材質(zhì)顏色作為整個(gè)多邊形的顏色來渲染該多邊形;如果多邊形不共面,被平面著色方式渲染的三維物體在多邊形之間將具有可視的清晰邊緣;平面著色是最快的著色方式。16、
22、請你解釋高洛德著模式的含義??己酥R點(diǎn): 著色模式考核知識點(diǎn)解釋它使用頂點(diǎn)法線和光照參數(shù)為每個(gè)頂點(diǎn)計(jì)算顏色,然后穿越多邊形的表面進(jìn)行插值,插值以線性方式完成,高洛德著色使物體的表面看上去彎曲而平滑。17、可編程管線渲染一個(gè)球體的步驟??己酥R點(diǎn): 著色模式考核知識點(diǎn)解釋1)找到用于渲染該球體的VertexShader和PixelShader;2)將參數(shù)傳遞給VertexShader,VertexShader的輸出再傳遞給PixelShader;3)繪制該球體;18、請說明怎樣對多級漸進(jìn)紋理過濾器進(jìn)行設(shè)置,并具體解釋Filter的取值??己酥R點(diǎn): 多級漸進(jìn)紋理過濾考核知識點(diǎn)解釋Device-S
23、etSamplerState(0,D3DSAMP_MIPFILTER,Filter);D3DTEXF_NONE:禁用多級漸進(jìn)紋理過濾;D3DTEXF_POINT:就會只使用與圖元大小最匹配的一級紋理;D3DTEXF_LINEAR:Direct3D就將與圖元大小最匹配的兩級紋理以線性方式混合。19、請你給出物體表面材質(zhì)的定義方式,并解釋每個(gè)參數(shù)的概念??己酥R點(diǎn): 材質(zhì)考核知識點(diǎn)解釋typedef strcut D3DMATERIAL9D3DCOLORVALUE Diffuse;/慢射光的反射屬性D3DCOLORVALUE Ambient;/環(huán)境光的反射屬性D3DCOLORVALUE Specu
24、lar;/鏡面光的反射屬性D3DCOLORVALUE Emissive;/自發(fā)光的反射屬性float Power;/鏡面光的高光強(qiáng)度D3DMATERIAL9,*LPD3DMATERIAL9;(三)、簡答1、著色器代碼編譯后,獲得一個(gè)IDirect3DVertexShader9接口的指針,它代表一個(gè)頂點(diǎn)著色器,具體方法,及其調(diào)用過程。 考核知識點(diǎn): 著色器考核知識點(diǎn)解釋HRESULT IDirect3DDevice9:CreateVertexShader(const DWORD* pFunction,IDirect3DVertexShader9*ppShader );其中,輸入?yún)?shù)pFuncti
25、on指向編譯成功的著色器代碼段,輸出參數(shù)ppShader指向最終生成的頂點(diǎn)著色器。 假設(shè)變量shader是一個(gè)包含已編譯的著色器代碼的ID3DXBuffer指針,如果要獲得一個(gè)IDirect3DVertexShader9接口,可以這樣寫: IDirect3DVertexShader9* NewShader = 0;hr=Device-CreateVertexShader( (DWORD*)shader-GetBufferPointer(),&NewShader);2、如何測定像素著色器的支持??己酥R點(diǎn): 像素著色器考核知識點(diǎn)解釋可用對SetDeviceCaps的調(diào)用來測定像素著色器的支持。
26、Caps結(jié)構(gòu)包括一個(gè)叫做PixelShaderVersion的DWORD成員,其值對主版本號和子版本號進(jìn)行編碼,解釋這個(gè)值的含義的最佳方法是用D3DPS_VERSION宏: D3DCAPS8 Caps;M_pD3D-GetDeviceCaps(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,&Caps);If(Caps.PixelShaderVersion = D3DPS_VERSION(1,1)If(Failed(EasyCreateWindowed(m_hWnd,D3DDEVTYPE_HAL,D3DCREATE_HARDWARE_VERTEXPROCESSING)Ret
27、urn FALSE;3、請給出D3DPRESENT_PARAMETERS的定義,并解釋BackBufferFormat,SwapEffect,Windowed三個(gè)參數(shù)的含義??己酥R點(diǎn): D3DPRESENT_PARAMETERS考核知識點(diǎn)解釋typedef struct _D3DPRESENT_PARAMETERS_ UINT BackBufferWidth;/全屏幕式后備緩沖的寬度 UINT BackBufferHeight;/全屏幕式后備緩沖的高度 D3DFORMAT BackBufferFormat;/后備緩沖的格式 UINT BackBufferCount;/后備緩沖的數(shù)目 D3DM
28、ULTISAMPLE_TYPE MultiSampleType;/全屏抗鋸齒類型 DWORD MultiSampleQuality;/全屏抗鋸齒質(zhì)量等級 D3DSWAPEFFECT SwapEffect;/交換緩沖類型HWND hDeviceWindow; BOOL Windowed;/全屏或窗口 BOOL EnableAutoDepthStencil;/激活深度緩沖 D3DFORMAT AutoDepthStencilFormat;/深度緩沖格式 DWORD Flags; UINT FullScreen_RefreshRateInHz;/顯示器刷新率 UINT PresentationInt
29、erval;/圖像最大刷新速度 D3DPRESENT_PARAMETERS; BackBufferFormat后備緩沖的格式,DX9只支持16位和32位的后備緩沖格式,如D3DFMT_R5G6B5表示后備緩沖的格式為每個(gè)像素16位,紅色5位、綠色6位、藍(lán)色5位,也可設(shè)置為D3DFMT_UNKNOWN,這時(shí)使用桌面的格式。 SwapEffect交換緩沖支持的效果類型,它是D3DSWAPEFFECT枚舉類型,此處設(shè)定為D3DSWAPEFFECT_DISCARD,即后備緩存的內(nèi)容被復(fù)制到屏幕上后,后備緩存的內(nèi)容失效,可以丟棄。 Windowed如果為FALSE,表示渲染全屏,若為TRUE,則渲染窗口
30、。4、基于win32基本框架,繪制文本的函數(shù)原型及調(diào)用。考核知識點(diǎn): 繪制文本考核知識點(diǎn)解釋在Render函數(shù)中通過DrawText函數(shù)控制文本顯示,該函數(shù)是LPD3DXFONT類的成員函數(shù),其函數(shù)原型如下:INT DrawText(LPD3DXSPRITE pSprite,LPctstr pString,INT Count,LPRECT pRect,DWORD Format,D3DCOLOR Color);此處的調(diào)用為:g_pFont-DrawText(NULL, strText,-1, &clientRect, DT_SINGLELINE|DT_NOCLIP|DT_CENTER|DT_VC
31、ENTER, 0xffffffff );5、頂點(diǎn)緩存中的頂點(diǎn)可以包含頂點(diǎn)坐標(biāo)、顏色、法線方向、紋理坐標(biāo)等屬性,具體包含哪些屬性,可以使用靈活頂點(diǎn)格式(Flexible Vertex Format,F(xiàn)VF)進(jìn)行描述;請解釋下面部分FVF描述符:D3DFVF_DIFFUSE, D3DFVF_NORMAL,D3DFVF_XYZ,D3DFVF_XYZRHW,D3DFVF_SPECULAR.考核知識點(diǎn): 靈活頂點(diǎn)格式考核知識點(diǎn)解釋 D3DFVF_DIFFUSE:頂點(diǎn)數(shù)據(jù)中包含漫反射顏色值;D3DFVF_NORMAL:頂點(diǎn)數(shù)據(jù)中包含法線向量,不能和D3DFVF_XYZRHW同時(shí)使用; D3DFVF_XYZ
32、:頂點(diǎn)數(shù)據(jù)中包含未經(jīng)坐標(biāo)變換的頂點(diǎn)坐標(biāo),不能與D3DFVF_XYZRHW同時(shí)使用;D3DFVF_XYZRHW:頂點(diǎn)數(shù)據(jù)中包含經(jīng)過坐標(biāo)變換的頂點(diǎn)坐標(biāo),不能與D3DFVF_XYZ和D3DFVF_NORMAL同時(shí)使用;D3DFVF_PSIZE:頂點(diǎn)信息指明繪制點(diǎn)的大小;D3DFVF_SPECULAR:頂點(diǎn)數(shù)據(jù)中鏡面反射效果下的顏色值;6、請給出創(chuàng)建頂點(diǎn)緩存的函數(shù)原型,并解釋其參數(shù)含義??己酥R點(diǎn): 頂點(diǎn)緩存考核知識點(diǎn)解釋創(chuàng)建頂點(diǎn)緩存的函數(shù)IDirect3DDevice9:CreateVertexBuffer()聲明如下:HRESULT IDirect3DDevice9:CreateVertexBuf
33、fer(UINT Length,/分配給緩存的字節(jié)大小;DWORD Usage,/指定關(guān)于怎樣使用緩存的額外信息;DWORD FVF,/存儲在緩存中的靈活頂點(diǎn)格式;D3DPOOL Pool,/緩存放置在哪一個(gè)內(nèi)存池中;IDirect3DVertexBuffer9 * ppVertexBuffer,/返回創(chuàng)建好的頂點(diǎn)緩存的指針;HANDLE* pSharedHandle );/沒有使用;設(shè)置為0;7、訪問頂點(diǎn)緩存數(shù)據(jù)時(shí)需要對其訪問區(qū)域加鎖,請給出加鎖函數(shù)原型并解釋其參數(shù)含義??己酥R點(diǎn): 頂點(diǎn)緩存訪問考核知識點(diǎn)解釋HRESULT IDirect3DVertexBuffer9:Lock(UINT
34、OffsetToLock,/偏移量,以字節(jié)為單位,從緩存開始位置到鎖定開始位置的距離UINT SizeToLock,/鎖定的字節(jié)數(shù)BYTE* ppbDate,/返回的指向鎖定內(nèi)存開始位置的指針DWORD Flags );/標(biāo)記描述如何鎖定內(nèi)存8、請給出創(chuàng)建索引緩存的函數(shù)原型,并解釋其參數(shù)含義??己酥R點(diǎn): 索引緩存考核知識點(diǎn)解釋創(chuàng)建索引緩存的函數(shù)如下:HRESULT IDirect3DDevice9:CreateIndexBuffer(UINT Length,/分配給緩存的字節(jié)大??;DWORD Usage,/指定關(guān)于怎樣使用緩存的額外信息;D3DFORMAT Format,/指定索引大小,使用
35、D3DFMT_INDEX16為16位索引,/D3DFMT_INDEX32為32位索引,但并非所有設(shè)備都支持32位索引D3DPOOL Pool,IDirect3DIndexBuffer9* ppIndexBuffer,/返回創(chuàng)建好的索引緩存的指針HANDLE* pSharedHandle );9、請給出使用帶有索引緩存的模型繪制的函數(shù)原型,并解釋其參數(shù)含義??己酥R點(diǎn): 索引緩存考核知識點(diǎn)解釋使用函數(shù)IDirect3DDevice9:DrawIndexedPrimitive繪制帶索引模型:HRESULT IDirect3DDevice9:DrawIndexedPrimitive(D3DPRIMI
36、TIVETYPE Type,/要繪制的圖元類型INT BaseVertexIndex,/為索引增加一個(gè)基數(shù),用頂點(diǎn)數(shù)目度量UINT MinIndex,/允許被引用的最小索引值UINT NumVertices,/本次調(diào)用中將被引用的頂點(diǎn)總數(shù)UINT StartIndex,/索引緩存中的某個(gè)位置,表示開始渲染的開始索引點(diǎn)UINT PrimitiveCount );/繪制圖元總數(shù)10、創(chuàng)建一個(gè)ID3DXMesh對象,然后從X文件中讀取集合信息數(shù)據(jù)填入到這個(gè)對象中。 請給出讀取函數(shù)的定義 ,及相關(guān)參數(shù)的含義。考核知識點(diǎn): ID3DXMesh對象考核知識點(diǎn)解釋HRESULT D3DXLoadMeshFr
37、omX(LPCSTR pFilename,/X 文件名 DWORD Options,/創(chuàng)建標(biāo)志 LPDIRECT3DDEVICE9 pDevice,/與創(chuàng)建Mesh有關(guān)的設(shè)備 LPD3DXBUFFER* ppAdjacency,/返回包含DWORD的ID3DXBuffer類型/的指針,描述Mesh的鄰接信息 LPD3DXBUFFER* ppMaterials,/返回包含D3DXMATERIAL結(jié)構(gòu)的數(shù)組 /的ID3DXBuffer指針,存儲了Mesh的材質(zhì)數(shù)據(jù) LPD3DXBUFFER* ppEffectInstances,/返回一個(gè)包含D3DXEFFECTINSTANCE結(jié)/構(gòu)的數(shù)組的ID3
38、DXBuffer類型指針 PDWORD pNumMaterials,/返回Mesh的材質(zhì)數(shù) LPD3DXMESH * ppMesh /返回填充了X文件幾何信息的ID3DXMesh對象 );(五)、程序題1、 下面是Alpha紋理實(shí)例程序片段,請將程序補(bǔ)充完整??己酥R點(diǎn): Alpha紋理示例程序及答案HRESULT InitializeD3D( HWND hWnd)/省略部分代碼g_pd3dDevice-SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE);/啟用Alpha混合g_pd3dDevice-SetRenderState( D3DRS_ALPHABL
39、ENDENABLE ,true);/設(shè)置源混合因子 g_pd3dDevice-SetRenderState( D3DRS_SRCBLEND ,D3DBLEND_SRCALPHA);/設(shè)置目標(biāo)混合因子 g_pd3dDevice-SetRenderState( D3DRS_DESTBLEND ,D3DBLEND_INVSRCALPHA);g_pd3dDevice-SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1);g_pd3dDevice-SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEX
40、TURE);g_pd3dDevice-SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_MODULATE);g_pd3dDevice-SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE);g_pd3dDevice-SetTextureStageState(0,D3DTSS_ALPHAARG2,D3DTA_DIFFUSE);/設(shè)置紋理過濾方式g_pd3dDevice-SetSamplerState(0, D3DSAMP_MAGFILTER ,D3DTEXF_POINT);/省略部分代碼2、下面是移動線
41、框正方體的程序片段,完成設(shè)置觀察矩陣及投影矩陣的片段,請將程序補(bǔ)充完整。考核知識點(diǎn): 變換示例程序及答案/ Position and aim the camera.D3DXVECTOR3 position(0.0f, 0.0f, -5.0f);D3DXVECTOR3 target(0.0f, 0.0f, 0.0f);D3DXVECTOR3 up(0.0f, 1.0f, 0.0f); D3DXMATRIX V;D3DXMatrixLookAtLH(&V, &position , &target, &up ); Device-SetTransform(D3DTS_VIEW, &V );/ Set
42、the projection matrix.D3DXMATRIX proj;D3DXMatrixPerspectiveFovLH(&proj,D3DX_PI * 0.5f,(float)Width / (float)Height,1.0f,1000.0f);Device-SetTransform( D3DTS_PROJECTION , &proj );3、下面是模擬箱子擋住茶壺,進(jìn)行深度測試的程序片段,請將程序補(bǔ)充完整??己酥R點(diǎn): 深度測試示例程序及答案bool Setup()/此處省略部分代碼/ 設(shè)置 Texture Filter States.Device-SetSamplerState
43、(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);Device-SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);Device-SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);/激活深度測試、設(shè)置深度測試函數(shù)Device-SetRenderState( D3DRS_ZENABLE ,TRUE);Device-SetRenderState( D3DRS_ZFUNC ,D3DCMP_LESS); /此處省略部分代碼LRESULT WINAPI MsgProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam)switch ( msg )case WM_KEYUP:switch (wParam) /此處省略部分代碼case VK_ESCAPE:Cleanup();PostQuitMessage(0);break;case 49:/開啟深度測
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國太湖蟹數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025至2030年中國中號吸通數(shù)據(jù)監(jiān)測研究報(bào)告
- 山西省太原市多校2024-2025學(xué)年高一下學(xué)期開學(xué)考試化學(xué)試題
- Unit 1 My day 單元試卷含答案含聽力原文無聽力音頻
- 2025年軍隊(duì)文職人員招聘之軍隊(duì)文職公共科目綜合檢測試卷B卷含答案
- 2024河北省中考英語真題【原卷版】
- 重大事件公關(guān)管理合同(2篇)
- 金子抵押合同(2篇)
- (一診)2025年蘭州市高三診斷考試歷史試卷(含答案)
- 電子商務(wù)平臺交易額及客戶評價(jià)統(tǒng)計(jì)表
- 2024全國各省高考詩歌鑒賞真題及解析
- 《電化學(xué)催化》課件
- 羊水栓塞應(yīng)急預(yù)案及流程
- 新課標(biāo)(水平三)體育與健康《籃球》大單元教學(xué)計(jì)劃及配套教案(18課時(shí))
- 《中國傳統(tǒng)文化儒家》課件
- 咨詢公司顧問崗位聘用協(xié)議
- 智慧農(nóng)貿(mào)解決方案
- 2024年四川省公務(wù)員錄用考試《行測》真題及答案解析
- “雙循環(huán)”視閾下我國稀土產(chǎn)業(yè)價(jià)值鏈的邏輯構(gòu)成與重構(gòu)路徑研究
- 2024年P(guān)E防靜電氣泡袋項(xiàng)目可行性研究報(bào)告
- 2024年四川省瀘州市中考物理試題含答案
評論
0/150
提交評論