freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于directx的第一人稱射擊游戲制作畢業(yè)論文-資料下載頁

2025-06-22 01:03本頁面
  

【正文】 京郵電大學世紀學院畢業(yè)設(shè)計(論文)29{ D3DLIGHTTYPE Type。 // 定義了所要創(chuàng)建的光源類型 D3DCOLORVALUE Diffuse。 // 該光源所發(fā)出的漫射光的顏色 D3DCOLORVALUE Specular。 // 該光源所發(fā)出的鏡面光的顏色 D3DCOLORVALUE Ambient。 // 該光源所發(fā)出的環(huán)境光的顏色 D3DVECTOR Position。 // 用于描述光源在世界坐標系中位置的向量。 D3DVECTOR Direction。 // 一個描述光在世界坐標系中傳播方向的向量。 float Range。 // 光線“消亡”前,所能達到的最大光程。 float Falloff。 // 僅用于聚光燈。定義了光強從內(nèi)錐形到外錐形的衰減方式 float Attenuation0。 // 該衰減變量定義了光強隨距離衰減的方式。僅用于點光源和聚光燈 float Attenuation1。 // 同 Attenuation0 float Attenuation2。 // 同 Attenuation0 float Theta。 // 僅用于聚光燈。指定了內(nèi)部錐形的圓錐角,單位為弧度 float Phi。 // 僅用于聚光燈。指定了外部錐形的圓錐角,單位為弧度}D3DLIGHT9。同樣,在 DirectX3D中定義的材質(zhì)結(jié)構(gòu)體如下:typedef struct D3DMATERIAL9 { D3DCOLORVALUE Diffuse。 // 指定表面反射的漫反射光 D3DCOLORVALUE Ambient。 // 指定表面反射的環(huán)境光 D3DCOLORVALUE Specular。 // 指定表面反射的鏡面光 D3DCOLORVALUE Emissive。 // 表面本身自發(fā)光 float Power。 // 鏡面高光北京郵電大學世紀學院畢業(yè)設(shè)計(論文)30} D3DMATERIAL9, *LPD3DMATERIAL9。 引擎中增加對光照的支持、。創(chuàng)建燈源結(jié)構(gòu),該結(jié)構(gòu)用于創(chuàng)建Direct3D中的燈源對象。以某種方式實現(xiàn)該結(jié)構(gòu),這樣也可將其用于OpenGL或其他渲染系統(tǒng)。,因為它可同時用于為Direct3D和OpenGL創(chuàng)建材質(zhì)數(shù)據(jù)。材質(zhì)結(jié)構(gòu)包含了創(chuàng)建不同類型材質(zhì)所必須的全部信息。,以及啟動光源函數(shù)。如下:// 設(shè)置并啟用光源void CD3DRenderer::SetLight(stLight *light, int index){ if(!light || !m_Device || index 0) return。 D3DLIGHT9 l。 = lightambientA。 = lightambientR。 = lightambientG。 = lightambientB。 = lightattenuation0。 = lightattenuation1。 = lightattenuation2。 = lightdiffuseA。 = lightdiffuseR。 = lightdiffuseG。 = lightdiffuseB。北京郵電大學世紀學院畢業(yè)設(shè)計(論文)31 = lightdirX。 = lightdirY。 = lightdirZ。 = lightfalloff。 = lightphi。 = lightposX。 = lightposY。 = lightposZ。 = lightrange。 = lightspecularA。 = lightspecularR。 = lightspecularG。 = lightspecularB。 = lighttheta。 if(lighttype == LIGHT_POINT) = D3DLIGHT_POINT。 else if (lighttype == LIGHT_SPOT) = D3DLIGHT_SPOT。 else = D3DLIGHT_DIRECTIONAL。 m_DeviceSetLight(index, amp。l)。 m_DeviceLightEnable(index, TRUE)。 DirectX3D 紋理開發(fā)令人信任的背景和環(huán)境是3D游戲項目的核心所在。場景中的幾乎每個表面都會應該人一種很強的視覺效果和觸模感。磚墻是由磚塊構(gòu)成的,木板箱是由許多塊木板構(gòu)成的,還有諸如此類等等。針對當前這種辦法,產(chǎn)生的問題就是為了獲取表面上更好的細節(jié)層次,就需要上千萬的獨立的著色小三角形,這樣,創(chuàng)建游戲場景耗費的時間就無法估計,沒有什么經(jīng)濟價值,并且還要占用大量的處理器資源。解決上述問題需要一種更好的增加細節(jié)層次的方法,并且不會增加不必要的代碼或是對象和場景的復雜度。“紋理映射”技術(shù)可以實現(xiàn)這樣的效果。紋理映射使北京郵電大學世紀學院畢業(yè)設(shè)計(論文)32用了圖像數(shù)據(jù)并將圖像數(shù)據(jù)繪制(映射)到表面上。該表面看上去就像有一幅圖在它上面。所以,如果有一堵墻,并將磚塊的紋理施加到這堵墻上面,那么即便只是這個表面使用了兩個三角形,它看上去也像場景中的一堵墻。圖 紋理貼圖示例 創(chuàng)建使用紋理在Direct3D中加載圖像時要用到一個名為LPDIRECT3DTEXTURE9的結(jié)構(gòu)。LPDIRECT3DTEXTURE9結(jié)構(gòu)是Direct3D中的紋理對象,在加載1D或2D紋理圖像時要用到該結(jié)構(gòu)。無論何時創(chuàng)建LPDIRECT3DTEXTURE9紋理對象,都要調(diào)用對象的Release()函數(shù)對其進行釋放。下列程序代碼列舉了D3DXCreateTexture()的原型:HRESULT WINAPI D3DXCreateTexture( LPDIRECT3DDEVICE9 pDevice, // Direct3D9的設(shè)備對象 UINT Width, // 圖像寬度 UINT Height, // 圖像高度 UINT MipLevels, // 圖片的圖層,一般用D3DX_DEFAULT,與圖像質(zhì)量有關(guān)北京郵電大學世紀學院畢業(yè)設(shè)計(論文)33 DWORD Usage, //設(shè)定這個紋理的使用方法 D3DFORMAT Format, // 每個顏色成分使用的位數(shù) D3DPOOL Pool, // 紋理對象駐留的內(nèi)存類別 LPDIRECT3DTEXTURE9 * ppTexture // 指向新創(chuàng)建的紋理對象)。 引擎中增加對紋理的支持引擎中添加紋理要做的第一件事情就是增加啟用和禁用透明度渲染狀態(tài)、設(shè)置透明度渲染狀態(tài)值并指明濾波器和濾波器類型的功能。這些可以在 件中完成,如下列程序所示。新添加的代碼位于 。// 一些渲染狀態(tài)enum RenderState{ CULL_NONE, CULL_CW, CULL_CCW, DEPTH_NONE, DEPTH_READONLY, DEPTH_READWRITE, SHADE_POINTS, SHADE_SOLIDTRI, SHADE_WIRETRI, SHADE_WIREPOLY, TRANSPARENCY_NONE, // 禁用透明度 TRANSPARENCY_ENABLE // 啟用透明度}。// 透明度渲染狀態(tài)值enum TransState{ TRANS_ZERO = 1,北京郵電大學世紀學院畢業(yè)設(shè)計(論文)34 TRANS_ONE, TRANS_SRCCOLOR, TRANS_INVSRCCOLOR, TRANS_SRCALPHA, TRANS_INVSRCALPHA, TRANS_DSTALPHA, TRANS_INVDSTALPHA, TRANS_DSTCOLOR, TRANS_INVDSTCOLOR, TRANS_SRCALPHASAT, TRANS_BOTHSRCALPHA, TRANS_INVBOTHSRCALPHA, TRANS_BLENDFACTOR, TRANS_INVBLENDFACTOR}。// 紋理過濾器的過濾模式enum TextureState{ MIN_FILTER, // 縮小率 MAG_FILTER, // 放大率 MIP_FILTER // mipmap紋理級別}。// 紋理過濾器類型enum FilterType{ POINT_TYPE, // 最近點采樣 LINEAR_TYPE, // 線性紋理過濾 ANISOTROPIC_TYPE // 各向異性紋理過濾北京郵電大學世紀學院畢業(yè)設(shè)計(論文)35}。,以及紋理讀取、透明度,幕外渲染等各種函數(shù)。代碼略。 DirectX3D 文本和圖形用戶界面 DirectX3D 文本為了在一個基本層次上顯示文本,要用到兩個不同的對象,即LPD3DXFONT和RECT這兩個結(jié)構(gòu)。LPD3DXFONT用于創(chuàng)建和顯示文本,而RECT用于確定要顯示的文本位置。為了創(chuàng)建LPD3DXFONT對象,就要用到一個名為D3DXCreateFont()的函數(shù)。該函數(shù)原型如下列程序清單所示。其成員變量如下:HRESULT D3DXCreateFont( LPDIRECT3DDEVICE9 pDevice, INT Height, // 字體字符的高度 UINT Width, // 字體字符的寬度 UINT Weight, // 打印字體的權(quán)重(即:粗體) UINT MipLevels, // 文本的Mipmap級別 BOOL Italic, // 字體是否為斜體 DWORD CharSet, // 用到的字符集 DWORD OutputPrecision, // 指定Windows與期望字體大小的匹配方法 DWORD Quality, // 指定Windows將字體和真實字體的匹配方法 DWORD PitchAndFamily, // 斜度和family索引 LPCTSTR pFacename, // 要用的字體類型名稱 LPD3DXFONT * ppFont // 要填充的LPD3DXFONT對象)。渲染文本對象就要用到LPD3DXFONT對象的DrawText()函數(shù)。即在屏幕上顯示指定的文本。程序的原形如下:INT DrawText( LPD3DXSPRITE pSprite, // 指向包含字符串的LPD3DXSPRITE對象的指針北京郵電大學世紀學院畢業(yè)設(shè)計(論文)36 LPCTSTR pString, // 屏幕上要顯示的文本 INT Count, // 字符串字符的數(shù)目 LPRECT pRect, // 一個RECT對象,定義了要顯示在屏幕上的第一個字符的起始位置 DWORD Format, // 指定字符串的顯示方式 D3DCOLOR Color // 屏幕上顯示的文本顏色)。 創(chuàng)建和顯示圖形用戶界面用戶圖形界面(GUI)系統(tǒng)將主要由按鈕和靜態(tài)文本控件對象構(gòu)成。同時,可以指定和按鈕、文本一起顯示的背景圖。GUI系統(tǒng)包括含有紋理坐標的 GUI頂點結(jié)構(gòu)、GUI 控件結(jié)構(gòu)和 GUI系統(tǒng)類。GUI頂點結(jié)構(gòu)包括(x,y,z)點的坐標;GUI 控件結(jié)構(gòu)包括控件類型、ID、顏色、索引鏈表等信息;GUI 系統(tǒng)類包括添加設(shè)備、背景圖像 GUI、返回高度長度等函數(shù)。除此之外,還要有一個系統(tǒng)回調(diào)函數(shù),來響應控件動作。這些功能定義在 ,代碼如下:// GUI控件結(jié)構(gòu)struct stGUIControl{int m_type。 // 控件類型int m_id。 // 控件 IDunsigned long m_color。 // 控件顏色int m_listID。 // 鏈表索引,字體對象 ID或頂點緩存 IDint m_xPos, m_yPos。 // 控件的 XY坐標int m_width, m_height。 // 控件的寬和高char *m_text。 // 指向靜態(tài)控件文本字符的指針北京郵電大學世紀學院畢業(yè)設(shè)計(論文)37int m_upTex, m_downTex, m_overTex。 // 按鈕的彈起、按下和停靠}。// GUI控件系統(tǒng)類class CGUISy
點擊復制文檔內(nèi)容
外語相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1