DirectX程序設計復習資料_第1頁
DirectX程序設計復習資料_第2頁
DirectX程序設計復習資料_第3頁
DirectX程序設計復習資料_第4頁
DirectX程序設計復習資料_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實用標準文檔 文案大全 DirectX程序設計課程期末復習資料 第一章3D游戲開發(fā)的數學基礎 本章包含的全部知識點: ? 點和向量 ? 直線與平面 ? 矩陣與坐標變換 ? 坐標系 章節(jié)重點: 矩陣和坐標變換 第二章Windows編程基礎 本章包含的全部知識點: ? 基本概念介紹 ? Windows程序結構 ? Win32程序開發(fā)實例 第三章DirectX快速入門 本章包含的全部知識點: ? DirectX概述 ? Direct3D 底層結構概述 ? DirectX9.0的配置和安裝 章節(jié)重點: DirectX9.0的配置和安裝 第四章 DirectX程序框架 本章包含的全部知識點: ? Win

2、32+C+Direct3D的基礎框架 ? DXUT框架 章節(jié)重點: Win32+C+Direct3D的基礎框架 實用標準文檔 文案大全 第五章 文本顯示 本章包含的全部知識點: ? 文本繪制流程 ? Win32程序框架實現(xiàn) ? DXUT程序框架實現(xiàn) 章節(jié)重點: Win32程序框架實現(xiàn) 第六章 基本圖形的繪制 本章包含的全部知識點: ? 圖元 ? 靈活頂點格式(FVF) ? 使用頂點緩存繪制圖形 ? 索引緩存 ? 顏色表示法 ? 渲染狀態(tài) ? 繪制準備 ? D3DX幾何物體 ? 實例設計與實現(xiàn) 章節(jié)重點: 頂點緩存 索引緩存 第七章 變 換 本章包含的全部知識點: ? 攝像機 ? 頂點變換 ?

3、光柵化 實用標準文檔 文案大全 ? 實例 章節(jié)重點: 頂點變換 第八章 3D數學基礎補充 本章包含的全部知識點: ? 常見坐標系 ? 向量 ? 矩陣 ? 線性變換 章節(jié)重點: ? 線性變換 第九章 光照和材質 本章包含的全部知識點: ? 真實感圖形基本概念 ? Direct3D中的光照 ? Direct3D中的材質 ? 光照和材質例子 章節(jié)重點: Direct3D中的光照 Direct3D中的材質 第十章 紋理映射 本章包含的全部知識點: ? 紋理貼圖 ? 紋理坐標 ? 紋理尋址模式 ? 紋理過濾 實用標準文檔 文案大全 ? 紋理混合狀態(tài) ? 紋理實例解析 章節(jié)重點: 紋理尋址模式 紋理過濾

4、第十一章 深度測試和反走樣 本章包含的全部知識點: ? 深度緩存與深度測試 ? 圖形反走樣 ? 深度測試實例 章節(jié)重點: 深度緩存與深度測試 第十二章 網格(一) 本章包含的全部知識點: ? ID3DXMesh ? 子集和屬性緩存 ? 繪制 ? 鄰接信息 ? 優(yōu)化 ? 屬性表 ? 創(chuàng)建一個Mesh ? 例子 章節(jié)重點: 子集和屬性緩存 創(chuàng)建一個Mesh 第十三章 網格(二) 實用標準文檔 文案大全 本章包含的全部知識點: ? X文件格式解析 ? 讀取X文件 ? 漸進網格 ? 漸進網格例子 章節(jié)重點: 深度緩存與深度測試 第十四章 混合和模板 本章包含的全部知識點: ? 混合因子 ? 混合計算

5、? Alpha來源 ? Alpha混合實例 ? 模板 章節(jié)重點: Alpha混合實例 第十五章 著色器入門 本章包含的全部知識點: ? 著色器概述 ? HLSL的變量 ? HLSL的函數 ? HLSL基本語法 ? 在Direct3D中使用HLSL 章節(jié)重點: Alpha混合實例 第十六章 頂點著色器 實用標準文檔 文案大全 本章包含的全部知識點: ? 頂點著色器概述 ? 頂點聲明 ? 使用頂點著色器 ? 頂點著色器實例 第十七章 像素著色器 本章包含的全部知識點: ? 像素著色器概述 ? 使用像素著色器 ? HLSL采樣器對象 ? 多重紋理 ? 例子程序 一、客觀部分:(單項選擇、多項選擇、不

6、定項選擇、判斷) (一)、選擇部分 1. D3DPRESENT_PARAMETERS參數很多,關于其中參數之一windowed的理解正確的是( ABD ) A.取值FALSE則渲染全屏 B.取值TRUE則渲染窗口 C. int類型 D.BOOL類型 E.double類型 考核知識點: D3DPRESENT_PARAMETERS 2. 以下屬于Direct 3D定義的圖元類型的有( ABCD ) A.點列表 B.線段條帶 C.三角形列表 D.三角形條帶 E.四邊形列表 考核知識點: 圖元 3. 以下屬于Direct 3D提供的著色模式的是( AB ) A.平面著色模式 B.高洛德法著色模式 C.

7、漸變著色模式 D.單顏色著色模式 考核知識點: 著色模式 4. 下面屬于Direct3D提供的創(chuàng)建旋轉矩陣的函數的是( ABC ) 實用標準文檔 文案大全 A. D3DXMatrixRotarionX B. D3DXMatrixRotarionY C. D3DXMatrixRotarionZ D. D3DXMatrixRotX E. D3DXMatrixRotY 考核知識點: 變換 5. 以下屬于Direct3D提供的簡化紋理過濾的過程的是( ABCD ) A.最近點采樣 B.線性過濾 C.各向異性過濾 D.mipmap過濾 考核知識點: 紋理過濾 6. D3DPRESENT_PARAMETE

8、RS參數很多,下面理解正確的是( ABCD ) A.Windowed取值FALSE則渲染全屏 B. BackBufferCount表示后備緩沖的數目 C. SwapEffect表示交換緩沖類型 D. BackBufferFormat表示后備緩沖的格式 考核知識點: D3DPRESENT_PARAMETERS 7. 以下屬于Direct3D中提供的標準光源的是( ABC ) A. 點光源 B. 方向光源 C. 聚焦光源 D.多點光源 考核知識點: 光源 8. 關于靈活頂點格式下列說法正確的是( ABD ) A. D3DFVF_DIFFUSE表示頂點數據中包含的是漫反射顏色值; B. D3DFVF

9、_SPECULAR表示頂點數據中包含的是鏡面反射下的顏色值 C. D3DFVF_XYZRHW表示頂點數據中包含的是未經過坐標變換的頂點坐標 D. D3DFVF_XYZ頂點數據中包含未經坐標變換的頂點坐標 考核知識點: 靈活頂點格式 解析:C項應該是經過坐標變換后的頂點坐標 9. 關于頂點Alpha描述正確的是( AB ) A. 如果在程序中直接指定每個頂點的顏色,直接給出每個頂點顏色的Alpha值。 B. 渲染對象中每個像素的Alpha值由該對象的Alpha值和著色模式決定。 C. 高洛德著色模式,所有像素的Alpha值都等于該多邊形的第一個頂點的Alpha值。 D. 平面著色模式,每個多邊形

10、上的像素的Alpha值由它的各個頂點的Alpha實用標準文檔 文案大全 值進行線性插值得到。 考核知識點: 頂點Alpha 解析:C項應該是平面著色模式,所有像素的Alpha值都等于該多邊形的第一個頂點的Alpha值。D項應該是高洛德著色模式,每個多邊形上的像素的Alpha值由它的各個頂點的Alpha值進行線性插值得到。 (二)、判斷部分 1. Direct3D將給每個采樣器對象連接一個唯一的紋理階段(stage),在應用程序中找出與采樣器對象相關聯(lián)的階段,并設置相應的紋理和采樣器狀態(tài)給該階段。 ( 正確 ) 考核知識點: 紋理 2. 一個Direct3D對象只能創(chuàng)建一個Direct3D設備對

11、象。 ( 錯誤 ) 考核知識點: Direct3D設備對象 考核知識點解釋 一個Direct3D對象可以創(chuàng)建多個Direct3D設備對象。 3. 由于Direct3D設備對象是由Direct3D對象創(chuàng)建的,因此應先釋放Direct3D設備對象。(正確) 考核知識點: Direct3D對象及設備對象 4. D3DFVF_XYZ頂點數據中包含未經坐標變換的頂點坐標,不能與D3DFVF_XYZRHW同時使用。(正確) 考核知識點: 靈活頂點格式 5. D3DFVF_XYZ頂點數據中包含未經坐標變換的頂點坐標,可以與D3DFVF_XYZRHW同時使用。(錯誤) 考核知識點: 靈活頂點格式 考核知識點解

12、釋 D3DFVF_XYZ頂點數據中包含未經坐標變換的頂點坐標,不可以與D3DFVF_XYZRHW同時使用。 6. D3DFVF_XYZRHW頂點數據中包含經過坐標變換的頂點坐標,不能與D3DFVF_XYZ和D3DFVF_NORMAL同時使用。(正確) 考核知識點: 靈活頂點格式 實用標準文檔 文案大全 7. Direct3D創(chuàng)建的場景和對象都是由簡單的“圖元”按照一定的方式排列組合而成的,Direct3D中的所有圖元都是一維或二維對象,包括單個的點和直線及復雜的多邊形。(正確) 考核知識點: 圖元 8. 在索引緩存中定位頂點也就是在頂點緩存中定位頂點。(正確) 考核知識點: 頂點緩存索引緩存

13、二、主觀部分: (一)、填空部分 1) 像素著色器的輸入僅有顏色和紋理坐標兩種語義。 考核知識點: 像素著色器 2) 像素著色器的工作是在頂點著色器之后,后者的輸出將為前者提供輸入。 考核知識點: 像素著色器 3) D3DFVF_DIFFUSE表示頂點數據中包含的是漫反射顏色值; 考核知識點: 靈活頂點格式 4) D3DFVF_SPECULAR表示頂點數據中包含的是鏡面反射下的顏色值; 考核知識點: 靈活頂點格式 5) D3DFVF_XYZRHW表示頂點數據中包含的是經過坐標變換的頂點坐標 考核知識點: 靈活頂點格式 6) Direct3DCreate9函數創(chuàng)建一個Direct3D對象并獲得指

14、向Direct3D對象接口的指針,且參數必須設置為D3D_SDK_VERSION。 考核知識點: Direct3D對象 7) DXUT(The DirectX Utility Library)是建立在Direct3D9和Direct3D10上的一個程序框架,其目標是建立一個強大而容易使用的Direct3D游戲開發(fā)框架,它簡化了Win32和Direct3D API的使用。 考核知識點: DXUT 8) 創(chuàng)建DirectX設備對象的函數為CreateDevice。 考核知識點: 設備對象 9) Direct3D圖形程序通過調用IDirect3DDevice9:SetRenderState()函數來

15、設置渲染狀態(tài)。 考核知識點: 設置渲染狀態(tài) 實用標準文檔 文案大全 10) g_pd3dDevice->SetRenderState(D3DRS_SHADEMODE,D3DSHADE_FLAT),這行代碼完成的功能是( 設置著色模式為平面著色模式)。 考核知識點: 設置著色模式 11) g_pd3dDevice->SetRenderState(D3DRS_SHADEMODE,D3DSHADE_GOURAUD),這行代碼完成的功能是( 設置著色模式為高洛德著色模式)。 考核知識點: 設置著色模式 (二)、名詞解釋 1、請你給出創(chuàng)建頂點聲明,并獲得IDirect3DVertexDecl

16、aration9接口指針的方法。 考核知識點: 頂點聲明 考核知識點解釋 HRESULT IDirect3DDevice9:CreateVertexDeclaration( CONST D3DVERTEXELEMENT9* pVertexElements, /要創(chuàng)建的頂點聲明 IDirect3DVertexDeclaration9* ppDecl /返回創(chuàng)建的IDirect3DVertexDeclaration9接 /口指針 ); 2、請你給出環(huán)境光(ambient light)的概念,并說明如何設置渲染狀態(tài)為整個場景添加環(huán)境光。 考核知識點: 環(huán)境光 考核知識點解釋 環(huán)境光(ambient

17、light) 由光源發(fā)出經環(huán)境多次散射而無法確定其方向的光,即好像是來自四面八方的光;室內成分大,室外成分少,沒有位置或方向上的特征,只有顏色亮度值,不會衰減; 通過設置渲染狀態(tài)為整個場景添加環(huán)境光: g_device->SetRenderState(D3DRS_AMBIENT,D3DCOLOR_X#); 3、請你給出鏡面反射光的概念,并說明如何設置渲染狀態(tài)。 考核知識點: 鏡面反射光 考核知識點解釋 鏡面光來自特定方向并被反射到特定方向;在默認狀態(tài)下,Direct3D不對物體進行鏡面反射計算,需設置相關的渲染狀態(tài): g_device->SetRenderState(D3DRS_S

18、PECULARENABLE,TRUE); 實用標準文檔 文案大全 如果需要進行漫反射或鏡面反射運算,那么在頂點緩沖器中必須包含頂點的法向量信息; 4、請給出設置像素著色器的函數原型及調用示例代碼。 考核知識點: 像素著色器 考核知識點解釋 HRESULT IDirect3DDevice9:SetPixelShader( IDirect3DPixelShader9* pShader ); 這個方法只接受一個參數,通過它傳遞一個我們要使用的指向像素著色器的指針。 示例代碼如下: Device->SetPixelShader(MultiTexPS); 5、銷毀像素著色器接口函數原型 考核知識點

19、: 像素著色器 考核知識點解釋 d3d:Release<IDirect3DPixelShader9*>(MultiTexPS); 6、在Direct3D的一個場景中,最多可設置幾個光源,設置函數形式。 考核知識點: 光源 考核知識點解釋 最多可設置8個光源 HRESULT SetLight(DWORD Index,CONST D3DLight9 *pLight ); 7、光照程序一般步驟。 考核知識點: 光照 考核知識點解釋 (1) 創(chuàng)建光源、設置其位置及相關屬性;SetLight函數將光源設置到渲染管道流水線中;LightEnable函數激活光源; (2) SetRenderSt

20、ate打開渲染管道流水線的光照開關; (3) 創(chuàng)建材質,設置物體的材質屬性,SetMaterial設定材質; 8、請給出點列表圖元的含義,并說明其應用。 考核知識點: 圖元 考核知識點解釋 實用標準文檔 文案大全 點列表是一個對每點獨立進行渲染的頂點集合。程序可以在3D場景中使用它模擬星空視野,或作為多邊形表面的點化線。 9、請給出線段列表圖元的含義,并說明其應用。 考核知識點: 圖元 考核知識點解釋 線段列表是一系列的獨立線段,用于為3D場景加入冰雹或大雨等效果,線段列表中頂點的數量必須是大于等于2的偶數。 10、請給出線段條帶圖元的含義,并說明其應用。 考核知識點: 圖元 考核知識點解釋

21、線段條帶是一個由相互鏈接的線段組合成的造型,程序可以用它產生不封閉的多邊形; 11、請給出三角形列表圖元的含義,并說明其應用。 考核知識點: 圖元 考核知識點解釋 三角形列表是一系列獨立的三角形,它們之間可能靠的很近,也可能不是,頂點總數必須能被3整除;使用三角形列表建立一個由離散面片組成的物體;如建立力場墻的一種方法是指定一個由互相不相連的小三角形組成的大型列表;然后將一個可以發(fā)散光線的材質和紋理應用到這個三角形列表上 12、請給出三角形條帶圖元的含義,并說明其應用。 考核知識點: 圖元 考核知識點解釋 三角形條帶是一連串相鄰接的三角形。3D場景中大部分物體都是由三角條帶組成的。 13、請給

22、出三角形扇圖元的含義,并說明其應用。 考核知識點: 圖元 考核知識點解釋 三角形扇和三角形條帶類似,但其所有三角形共享一個頂點。3D場景中曲面的描述。 14、請給出Direct3D中設置渲染狀態(tài)的函數原型,并解釋其參數含義。 實用標準文檔 文案大全 考核知識點: 渲染狀態(tài) 考核知識點解釋 Direct3D圖形程序通過調用IDirect3DDevice9:SetRenderState()函數來設置渲染狀態(tài)。枚舉類型D3DRENDERSTATETYPE列舉出所有可能的渲染狀態(tài);使用SetRenderState()設置: HRESULT IDirect3DDevice9:SetRenderState

23、( D3DRENDERSTATETYPE State, /更改的渲染狀態(tài) DWORD Value ); /新的狀態(tài)值 15、請你解釋平面著色模式的含義。 考核知識點: 著色模式 考核知識點解釋 Direct3D繪制流水線使用多邊形第一個頂點的材質顏色作為整個多邊形的顏色來渲染該多邊形;如果多邊形不共面,被平面著色方式渲染的三維物體在多邊形之間將具有可視的清晰邊緣;平面著色是最快的著色方式。 16、請你解釋高洛德著模式的含義。 考核知識點: 著色模式 考核知識點解釋 它使用頂點法線和光照參數為每個頂點計算顏色,然后穿越多邊形的表面進行插值,插值以線性方式完成,高洛德著色使物體的表面看上去彎曲而平

24、滑。 17、可編程管線渲染一個球體的步驟。 考核知識點: 著色模式 考核知識點解釋 1)找到用于渲染該球體的VertexShader和PixelShader; 2)將參數傳遞給VertexShader,VertexShader的輸出再傳遞給PixelShader; 3)繪制該球體; 18、請說明怎樣對多級漸進紋理過濾器進行設置,并具體解釋Filter的取值。 考核知識點: 多級漸進紋理過濾 考核知識點解釋 Device->SetSamplerState(0,D3DSAMP_MIPFILTER,Filter); 實用標準文檔 文案大全 D3DTEXF_NONE:禁用多級漸進紋理過濾; D3

25、DTEXF_POINT:就會只使用與圖元大小最匹配的一級紋理; D3DTEXF_LINEAR:Direct3D就將與圖元大小最匹配的兩級紋理以線性方式混合。 19、請你給出物體表面材質的定義方式,并解釋每個參數的概念。 考核知識點: 材質 考核知識點解釋 typedef strcut D3DMATERIAL9 D3DCOLORVALUE Diffuse; /慢射光的反射屬性 D3DCOLORVALUE Ambient; /環(huán)境光的反射屬性 D3DCOLORVALUE Specular; /鏡面光的反射屬性 D3DCOLORVALUE Emissive; /自發(fā)光的反射屬性 float Powe

26、r; /鏡面光的高光強度 D3DMATERIAL9,*LPD3DMATERIAL9; (三)、簡答 1、著色器代碼編譯后,獲得一個IDirect3DVertexShader9接口的指針,它代表一個頂點著色器,具體方法,及其調用過程。 考核知識點: 著色器 考核知識點解釋 HRESULT IDirect3DDevice9:CreateVertexShader( const DWORD* pFunction, IDirect3DVertexShader9*ppShader ); 其中,輸入參數pFunction指向編譯成功的著色器代碼段,輸出參數ppShader指向最終生成的頂點著色器。 假設變量

27、shader是一個包含已編譯的著色器代碼的ID3DXBuffer指針,如果要獲得一個IDirect3DVertexShader9接口,可以這樣寫: IDirect3DVertexShader9* NewShader = 0; hr=Device->CreateVertexShader( (DWORD*)shader->GetBufferPointer(),&NewShader); 2、如何測定像素著色器的支持。 實用標準文檔 文案大全 考核知識點: 像素著色器 考核知識點解釋 可用對SetDeviceCaps的調用來測定像素著色器的支持。 Caps結構包括一個叫做Pixel

28、ShaderVersion的DWORD成員,其值對主版本號和子版本號進行編碼,解釋這個值的含義的最佳方法是用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_HAR DWARE_VERTEXPROCESSING) Return

29、FALSE; 3、請給出D3DPRESENT_PARAMETERS的定義,并解釋BackBufferFormat,SwapEffect,Windowed三個參數的含義。 考核知識點: D3DPRESENT_PARAMETERS 考核知識點解釋 typedef struct _D3DPRESENT_PARAMETERS_ UINT BackBufferWidth; /全屏幕式后備緩沖的寬度 UINT BackBufferHeight; /全屏幕式后備緩沖的高度 D3DFORMAT BackBufferFormat; /后備緩沖的格式 UINT BackBufferCount; /后備緩沖的數目

30、D3DMULTISAMPLE_TYPE MultiSampleType; /全屏抗鋸齒類型 DWORD MultiSampleQuality; /全屏抗鋸齒質量等級 D3DSWAPEFFECT SwapEffect; /交換緩沖類型 HWND hDeviceWindow; BOOL Windowed; /全屏或窗口 BOOL EnableAutoDepthStencil; /激活深度緩沖 實用標準文檔 文案大全 D3DFORMAT AutoDepthStencilFormat; /深度緩沖格式 DWORD Flags; UINT FullScreen_RefreshRateInHz; /顯示器

31、刷新率 UINT PresentationInterval; /圖像最大刷新速度 D3DPRESENT_PARAMETERS; ? BackBufferFormat后備緩沖的格式,DX9只支持16位和32位的后備緩沖格式,如D3DFMT_R5G6B5表示后備緩沖的格式為每個像素16位,紅色5位、綠色6位、藍色5位,也可設置為D3DFMT_UNKNOWN,這時使用桌面的格式。 ? SwapEffect交換緩沖支持的效果類型,它是D3DSWAPEFFECT枚舉類型,此處設定為D3DSWAPEFFECT_DISCARD,即后備緩存的內容被復制到屏幕上后,后備緩存的內容失效,可以丟棄。 ? Windo

32、wed如果為FALSE,表示渲染全屏,若為TRUE,則渲染窗口。 4、基于win32基本框架,繪制文本的函數原型及調用。 考核知識點: 繪制文本 考核知識點解釋 在Render函數中通過DrawText函數控制文本顯示,該函數是LPD3DXFONT類的成員函數,其函數原型如下: INT DrawText(LPD3DXSPRITE pSprite,LPctstr pString,INT Count,LPRECT pRect,DWORD Format,D3DCOLOR Color); 此處的調用為:g_pFont->DrawText(NULL, strText,-1, &client

33、Rect, DT_SINGLELINE|DT_NOCLIP|DT_CENTER|DT_VCENTER, 0xffffffff ); 5、頂點緩存中的頂點可以包含頂點坐標、顏色、法線方向、紋理坐標等屬性,具體包含哪些屬性,可以使用靈活頂點格式(Flexible Vertex Format,F(xiàn)VF)進行描述;請解釋下面部分FVF描述符: D3DFVF_DIFFUSE, D3DFVF_NORMAL,D3DFVF_XYZ,D3DFVF_XYZRHW,D3DFVF_SPECULAR. 考核知識點: 靈活頂點格式 實用標準文檔 文案大全 考核知識點解釋 D3DFVF_DIFFUSE:頂點數據中包含漫反射顏

34、色值; D3DFVF_NORMAL:頂點數據中包含法線向量,不能和D3DFVF_XYZRHW同時使用; D3DFVF_XYZ:頂點數據中包含未經坐標變換的頂點坐標,不能與D3DFVF_XYZRHW同時使用; D3DFVF_XYZRHW:頂點數據中包含經過坐標變換的頂點坐標,不能與D3DFVF_XYZ和D3DFVF_NORMAL同時使用; D3DFVF_PSIZE:頂點信息指明繪制點的大??; D3DFVF_SPECULAR:頂點數據中鏡面反射效果下的顏色值; 6、請給出創(chuàng)建頂點緩存的函數原型,并解釋其參數含義。 考核知識點: 頂點緩存 考核知識點解釋 創(chuàng)建頂點緩存的函數IDirect3DDevi

35、ce9:CreateVertexBuffer()聲明如下: HRESULT IDirect3DDevice9:CreateVertexBuffer( UINT Length, /分配給緩存的字節(jié)大??; DWORD Usage, /指定關于怎樣使用緩存的額外信息; DWORD FVF, /存儲在緩存中的靈活頂點格式; D3DPOOL Pool, /緩存放置在哪一個內存池中; IDirect3DVertexBuffer9 * ppVertexBuffer,/返回創(chuàng)建好的頂點緩存的指針; HANDLE* pSharedHandle ); /沒有使用;設置為0; 7、訪問頂點緩存數據時需要對其訪問區(qū)域

36、加鎖,請給出加鎖函數原型并解釋其參數含義。 考核知識點: 頂點緩存訪問 考核知識點解釋 HRESULT IDirect3DVertexBuffer9:Lock( UINT OffsetToLock,/偏移量,以字節(jié)為單位,從緩存開始位置到鎖定開始位置的距離 實用標準文檔 文案大全 UINT SizeToLock, /鎖定的字節(jié)數 BYTE* ppbDate, /返回的指向鎖定內存開始位置的指針 DWORD Flags ); /標記描述如何鎖定內存 8、請給出創(chuàng)建索引緩存的函數原型,并解釋其參數含義。 考核知識點: 索引緩存 考核知識點解釋 創(chuàng)建索引緩存的函數如下: HRESULT IDirec

37、t3DDevice9:CreateIndexBuffer( UINT Length, /分配給緩存的字節(jié)大?。?DWORD Usage, /指定關于怎樣使用緩存的額外信息; D3DFORMAT Format,/指定索引大小,使用D3DFMT_INDEX16為16位索引, /D3DFMT_INDEX32為32位索引,但并非所有設備都支持32位索引 D3DPOOL Pool, IDirect3DIndexBuffer9* ppIndexBuffer, /返回創(chuàng)建好的索引緩存的指針 HANDLE* pSharedHandle ); 9、請給出使用帶有索引緩存的模型繪制的函數原型,并解釋其參數含義。

38、考核知識點: 索引緩存 考核知識點解釋 使用函數IDirect3DDevice9:DrawIndexedPrimitive繪制帶索引模型: HRESULT IDirect3DDevice9:DrawIndexedPrimitive( D3DPRIMITIVETYPE Type, /要繪制的圖元類型 INT BaseVertexIndex, /為索引增加一個基數,用頂點數目度量 UINT MinIndex, /允許被引用的最小索引值 UINT NumVertices, /本次調用中將被引用的頂點總數 UINT StartIndex, /索引緩存中的某個位置,表示開始渲染的開始索引點 UINT P

39、rimitiveCount ); /繪制圖元總數 實用標準文檔 文案大全 10、創(chuàng)建一個ID3DXMesh對象,然后從X文件中讀取集合信息數據填入到這個對象中。 請給出讀取函數的定義 ,及相關參數的含義。 考核知識點: ID3DXMesh對象 考核知識點解釋 HRESULT D3DXLoadMeshFromX( LPCSTR pFilename, /X 文件名 DWORD Options, /創(chuàng)建標志 LPDIRECT3DDEVICE9 pDevice, /與創(chuàng)建Mesh有關的設備 LPD3DXBUFFER* ppAdjacency, /返回包含DWORD的ID3DXBuffer類型 /的指針

40、,描述Mesh的鄰接信息 LPD3DXBUFFER* ppMaterials, /返回包含D3DXMATERIAL結構的數組 /的ID3DXBuffer指針,存儲了Mesh的材質數據 LPD3DXBUFFER* ppEffectInstances, /返回一個包含D3DXEFFECTINSTANCE結 /構的數組的ID3DXBuffer類型指針 PDWORD pNumMaterials, /返回Mesh的材質數 LPD3DXMESH * ppMesh /返回填充了X文件幾何信息的ID3DXMesh對象 ); (五)、程序題 1、 下面是Alpha紋理實例程序片段,請將程序補充完整。 考核知識點

41、: Alpha紋理 示例程序及答案 HRESULT InitializeD3D( HWND hWnd) /省略部分代碼 g_pd3dDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_NONE); /啟用Alpha混合 g_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE ,true); /設置源混合因子 實用標準文檔 文案大全 g_pd3dDevice->SetRenderState( D3DRS_SRCBLEND ,D3DBLEND_SRCALPHA); /設置目標混合因子 g_p

42、d3dDevice->SetRenderState( D3DRS_DESTBLEND ,D3DBLEND_INVSRCALPHA); g_pd3dDevice->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1); g_pd3dDevice->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE); g_pd3dDevice->SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_MODULATE); g_pd3dDev

43、ice->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE); g_pd3dDevice->SetTextureStageState(0,D3DTSS_ALPHAARG2,D3DTA_DIFFUSE); /設置紋理過濾方式 g_pd3dDevice->SetSamplerState(0, D3DSAMP_MAGFILTER ,D3DTEXF_POINT); /省略部分代碼 2、下面是移動線框正方體的程序片段,完成設置觀察矩陣及投影矩陣的片段,請將程序補充完整。 考核知識點: 變換 示例程序及答案 / Position

44、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 the projection matrix.

45、 D3DXMATRIX proj; D3DXMatrixPerspectiveFovLH( &proj, D3DX_PI * 0.5f, (float)Width / (float)Height, 1.0f, 1000.0f); Device->SetTransform( D3DTS_PROJECTION , &proj ); 3、下面是模擬箱子擋住茶壺,進行深度測試的程序片段,請將程序補充完整。 考核知識點: 深度測試 示例程序及答案 bool Setup() /此處省略部分代碼 / 設置 Texture Filter States. Device->SetSam

46、plerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); Device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR); Device->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR); /激活深度測試、設置深度測試函數 Device->SetRenderState( D3DRS_ZENABLE ,TRUE); Device->SetRenderState( D3DRS_ZFUNC ,D3DCMP_LESS);

47、 /此處省略部分代碼 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:/開啟深度測試 g_pd3dDevice->SetRenderState( D3DRS_ZENABLE ,TRUE); break; case 50:/關閉深度測試 g_pd3dDevice->SetRenderState(D3DRS_ZENABLE, FALSE ); break; break; return DefWindowProc(hWnd,msg,wParam,lParam); 4、下面是一程序片段,實現(xiàn)從”Tiger.x”文件

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論