版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VisualStudio的模擬三維空間飛行玩耍設(shè)計(jì)引言
第1緒論3D而且3D玩耍性更多元化更靠近真實(shí)世界,因此在玩耍產(chǎn)業(yè)中,3D玩耍己經(jīng)漸漸ZD3D3D玩耍制作方面,歐美和日本的一些廠商都擁有自己成熟的3D玩耍引擎,他們2》等,甚至被奉為經(jīng)典,市場(chǎng)潛力巨大。國(guó)內(nèi)3D玩耍近年來(lái)也不乏精品,如長(zhǎng)期以來(lái)3DOpenGL。在我所爭(zhēng)論的工程中,承受Direct3D技術(shù)開(kāi)發(fā)一個(gè)模擬三維空間的飛行玩耍設(shè)計(jì)。本課題以VisualStudio2023為開(kāi)發(fā)平臺(tái),利用用于三維景觀顯示的圖形相關(guān)函數(shù)庫(kù)創(chuàng)立3D對(duì)象,在景觀的三維顯示中,使用三維空間的本地坐標(biāo)系、世界坐標(biāo)系、投影坐標(biāo)系,空間的矢量、平面,3D變換所需的矢量和矩陣及幾何體外表紋理顯示設(shè)計(jì):三維空間的生成和渲染、光線的運(yùn)用、3D2D對(duì)象的調(diào)用和顯示等等。本文主要介紹了用DirectX9.0進(jìn)展計(jì)算機(jī)圖像設(shè)計(jì)的技術(shù),其中著重強(qiáng)調(diào)了在玩耍方面的應(yīng)用。其中表達(dá)了Direot3D的根本原則和一些較高級(jí)的技術(shù)。WindowsAPIDirect3D3D圖像編程的局部。3D編程中所需的一些數(shù)學(xué)學(xué)問(wèn),諸如三維空間中的矢量、平面,3D變換所需的矢量和矩陣運(yùn)算學(xué)問(wèn)等等;其次Direct3D與顯示硬件的關(guān)系,Direct3D所扮演的角色,設(shè)備的分介紹了怎樣在Direct3D中顯示3D對(duì)象,3D技術(shù)的一些元素,諸如光,包括光源第三局部,著重表達(dá)了Direct3D中各種技術(shù),主要是地形的渲染,包括實(shí)現(xiàn)景觀的三維顯示,飛行玩耍的設(shè)計(jì)過(guò)程等。爭(zhēng)論背景Internet的普及,玩耍業(yè)迎來(lái)了蓬勃進(jìn)展的時(shí)代。數(shù)年之前在486機(jī)器上運(yùn)行的DOS玩耍已經(jīng)讓人玩的如癡如醉,興奮不已?,F(xiàn)在,由于CPU以及顯卡等設(shè)備的飛速進(jìn)展,為人們開(kāi)發(fā)更加炫目多彩的玩耍供給了可能。一塊高性能的顯卡能在一秒鐘內(nèi)完成數(shù)千萬(wàn)個(gè)多邊形的處理,高速CPU在顯卡的關(guān)心下,所營(yíng)造出的玩耍環(huán)境幾乎可以亂真。鳴的景象。玩耍產(chǎn)業(yè)進(jìn)展至今雖然只有30年左右的時(shí)間,卻己經(jīng)成為全球消遣SonyPlaystationZ、任天堂的GameCubeXB0X之間競(jìng)爭(zhēng)趨于白熱化,更使得整個(gè)玩耍產(chǎn)業(yè)成為眾所矚目的焦點(diǎn)。是最早的計(jì)算機(jī)玩耍之一。70年月的黃金歲月到來(lái)時(shí),全世界的臺(tái)式計(jì)算機(jī)和小型計(jì)算機(jī)流行著文本玩耍和粗糙的圖片玩耍。在PC界,有史可考的最早一款PC玩耍是斯考特·亞1978TRS—80開(kāi)啟了今日近百億霉運(yùn)的電腦玩耍市場(chǎng)。16IBMPC及兼容機(jī)、Mac、AtariST等等,這時(shí)候,玩耍已經(jīng)變得很好看,甚至有了一些3D的玩耍。但是,PC機(jī)仍舊落后于玩耍主機(jī)。90年月初期,IBMPC及兼容機(jī)漸漸成為主流,伴隨著Windows3.0的公布MacintoshPC上進(jìn)展玩耍、編程、1993IdSoftware發(fā)行了《DOOM》作為Wolfestein3D的換代產(chǎn)品,PC機(jī)開(kāi)頭成DOOM》的成功說(shuō)明白微機(jī)上是可以做此,DirectX1.0為玩耍而生。進(jìn)入21世紀(jì),使用大型3D引擎架構(gòu)的玩耍漸漸成為市場(chǎng)的主流,并以絢麗的畫(huà)面和逼真的場(chǎng)景一次又一次的吸引著人們的目光。DirectX技術(shù)也成為當(dāng)今圖形處理及多媒體處理的主流技術(shù),目前版本已經(jīng)進(jìn)展到了DirectX9.0c。3D玩耍性更多元化更靠近真實(shí)世界,因此在玩耍產(chǎn)業(yè)中,3D玩耍己經(jīng)漸漸ZD3D化。3D玩耍過(guò)程中存在著諸如技術(shù)更快、程序人員與美工的協(xié)作、各廠3D硬件規(guī)格和特性不同、失敗率高等風(fēng)險(xiǎn),但不行否認(rèn),3D玩耍己是大勢(shì)所趨。3D3D玩耍3D玩耍引擎的成熟進(jìn)展,將使得玩耍開(kāi)發(fā)廠設(shè)計(jì)出畫(huà)面華美、內(nèi)容充實(shí)的玩耍。國(guó)內(nèi)外爭(zhēng)論現(xiàn)狀隨著電腦繪圖技術(shù)的不斷演進(jìn),3D3D各界爭(zhēng)論、應(yīng)用的主題,3D作、多媒體教學(xué)、虛擬現(xiàn)實(shí)以及玩耍行業(yè)等。內(nèi)國(guó)內(nèi)的玩耍公司如雨后春筍般的成立,所開(kāi)發(fā)或代理的網(wǎng)絡(luò)玩耍更是不勝枚E3(ElectronicEntertainmentExposition)展中,已經(jīng)有幾家的韓國(guó)廠商擠入世界第一線玩耍開(kāi)發(fā)廠商之列。以全球玩耍業(yè)界的進(jìn)展來(lái)看美國(guó)一個(gè)市場(chǎng)爭(zhēng)論就發(fā)表的報(bào)告顯示,到2023200的三大領(lǐng)域之一,玩耍產(chǎn)業(yè)已被稱為“陽(yáng)光產(chǎn)業(yè)”。
2章數(shù)學(xué)根底3D常常想知道光線的照耀方向,以及在3D世界中的攝像機(jī)。矢量為在三維空間中3D空間方向的機(jī)制。的位置。在3D圖形程序中,雖然我們主要關(guān)心3D矢量,但有時(shí)也會(huì)用到2D和4DD3DXD3DXVECTOR2D3DXVECTOR42D4D3D3D2D4Dn矢量點(diǎn)乘點(diǎn)乘是對(duì)兩相乘矢量的代數(shù)定義:u*v=uxvx+uyvy+uzvz=s (3.1)算法似乎并沒(méi)有明顯的幾何意義,我們可以從下式找出其隱含意義:u*v=||u|||v||cos (3.2)兩點(diǎn)乘的矢量夾角大小與其點(diǎn)乘結(jié)果有如下關(guān)系:乘積為0時(shí),表示兩矢量垂直90度090度矢量差乘乘矢量的得另一矢量:u*v=[(uyvz-uzvy),(uzvx-uxvz),(uxvy-uyvx)] (3.3)矩陣根本變換mxn矩陣是擁有mn列的數(shù)組。行數(shù)和列數(shù)打算了矩陣的維數(shù)。Direct3D4X4的矩陣來(lái)描述特定的變換,由于4x43x33D變換,然而很多變換都不能用3x3的矩陣來(lái)描述,4x4的矩陣使我們能夠描述通過(guò)矢量與矩陣相乘所完成的矩陣變換。也正由于如此我們使用的是1X4的矢量,由于1x3的矢量4x4矩陣相乘的。主要的矩陣變換有平移,縮放和旋轉(zhuǎn)。(由它的全部頂點(diǎn))縮放到原來(lái)的三倍。1x43D3D4D的單行矩陣,這樣就符合1x34x4的矩陣相乘是不允許的。那么,在使用第四個(gè)成員時(shí)〔用w來(lái)表示1x4的行矩陣中時(shí),設(shè)置w1。允許對(duì)點(diǎn)進(jìn)展適當(dāng)?shù)钠揭啤S捎谙蛄亢臀恢脽o(wú)關(guān),所對(duì)向量進(jìn)展平移,當(dāng)把一個(gè)向量放置到一個(gè)1x4行矩陣中時(shí),把w設(shè)置為0。例p=〔p1,p2,p3〕放置到一個(gè)單行矩陣中,就像這樣:[p1,p2,p3,1],[v1,v2,v3,0]w=0是為了防止向量被平移。當(dāng)檢查矩陣實(shí)際平移時(shí)這是一個(gè)格外清楚的模型。矩陣是怎樣轉(zhuǎn)變頂點(diǎn)的位置的呢?要轉(zhuǎn)變一個(gè)頂點(diǎn)的x,yz們與某個(gè)矩陣相乘。x、yz值分別與每列上的數(shù)相乘再相加,每列上得出的數(shù)都是頂點(diǎn)的一個(gè)坐標(biāo)值。DirectX給我們供給了一些函數(shù)能便利地生成一些通常的矩陣。那么,怎樣(復(fù)合變換):一個(gè)用來(lái)旋轉(zhuǎn)的一個(gè)用來(lái)縮放的;然后,我們把兩個(gè)矩陣相乘,得出一個(gè)的復(fù)合矩陣,即縮放又旋轉(zhuǎn)的矩陣;然后利用這個(gè)的矩陣來(lái)變幻頂點(diǎn)。應(yīng)當(dāng)留意的是,矩陣相乘并不是一般的乘法,而且,也不滿足交換率:AXBBX矩陣A出了矩陣的第一行的四個(gè)元素(Columnl-4),其它元素的計(jì)算方法依此類推。DirectX概述
第3DirectX技術(shù)簡(jiǎn)介DirectX造就了這一切。DirectX〔簡(jiǎn)稱:DX〕是一個(gè)用于多媒體應(yīng)用程序和硬件增加的編程環(huán)境,ProgrammingInterfac該接口為設(shè)計(jì)高性能、實(shí)時(shí)的應(yīng)用程序一個(gè)是運(yùn)行庫(kù),通過(guò)DirectX編譯出來(lái)的程序必需要有運(yùn)行庫(kù)的支持,另外一個(gè)是開(kāi)發(fā)庫(kù),也就是玩耍程序設(shè)計(jì)者們通常所說(shuō)的SDK,這局部是在編譯DirectX程序是必需的,也就是說(shuō)在程序編譯時(shí)我們既使用了DirectX的運(yùn)行庫(kù)同時(shí)也使DirectX的開(kāi)發(fā)庫(kù)。DirectXCOM(ComponetObjectModel,組件DirectXDL〔動(dòng)態(tài)鏈接庫(kù)特別是玩?!吃贛icrosoftWindows下的性能可以到達(dá)甚至超過(guò)在MS-DOS下的性能,并且為之供給一個(gè)強(qiáng)壯、標(biāo)準(zhǔn)化以及文檔化的編程環(huán)境。DirectX優(yōu)勢(shì)主要表現(xiàn)在兩個(gè)方面:1.為軟件開(kāi)發(fā)者供給硬件無(wú)關(guān)性MicrosoftDirectXWindows系的玩耍開(kāi)發(fā)環(huán)境,在DirectX之前,多數(shù)的玩耍開(kāi)發(fā)都是基于MS-DOS的,那時(shí)玩耍開(kāi)發(fā)者不得不自DirectX,玩耍開(kāi)發(fā)者就可以享受DirectX給他們帶來(lái)的設(shè)備無(wú)關(guān)性,而絲毫不受影響地直接訪問(wèn)硬件。DirectX的首要目標(biāo)即是將MS-DOS下的很多特性移植到Windows平臺(tái)上來(lái),在提高應(yīng)用程序的性能的同時(shí),清楚個(gè)人呢電腦不斷更的硬件給程序帶來(lái)的障礙。另外,通過(guò)供給應(yīng)用程序和硬件之間全都的接口,DirectXWindows的最大潛能,也使應(yīng)用程序安裝和設(shè)置的簡(jiǎn)單度大大降低。使用DirectX供給的Windows的高性能玩耍將從以下技術(shù)中獲利:特地為提高速度而設(shè)計(jì)的極速卡Windows硬件和軟件(c)Windows內(nèi)建的通信支持〔包括DirectPlay〕2.為硬件開(kāi)發(fā)供給的標(biāo)準(zhǔn)DirectX建議硬件設(shè)計(jì)遵循肯定的標(biāo)準(zhǔn),這個(gè)標(biāo)準(zhǔn)的制定基于高性能應(yīng)用程序的開(kāi)發(fā)者和獨(dú)立硬件供給商的反響,因而,DirectX程序員參考的有關(guān)內(nèi)容甚關(guān)心在標(biāo)準(zhǔn)所限范圍之內(nèi)的硬件力量,而略過(guò)那些不被范圍所支持的特性。DirectX的根本構(gòu)造及組成3.2.1DirectX的根本構(gòu)造DirectXDirectX的構(gòu)造〔HA〔HEDirectX“兼容表”,其中記錄了當(dāng)前用劍系統(tǒng)支持的功能,DirectX需要實(shí)現(xiàn)某個(gè)功能時(shí)就查詢?cè)摫?,得到硬件?duì)功能的支持信息,假設(shè)HALHEL3-1DirectX的根本構(gòu)造。3-1DirectX的根本構(gòu)造3.2.2DirectX的根本組成DirectXSDKAPI函數(shù)庫(kù),最初用于玩耍的開(kāi)發(fā),如今很多的多媒體軟件都是使用它所開(kāi)發(fā)出來(lái)的。DirectX中包含了各種組件用來(lái)2D3D圖像、聲音、網(wǎng)絡(luò)連接以及掌握各類輸入裝置,是玩耍開(kāi)發(fā)中不行3-2DirectX的根本組成:3-2DirectX根本組成DirectX3-1所示的七個(gè)主要局部組成:3-1DirectX主要組件Direct3DDirectDraw組件SDK的主要組件之一,它允許直接對(duì)顯示內(nèi)存操作,Windows的應(yīng)DirectDrawWindows圖形設(shè)備接口〔GraphicsDeviceInterface,GDI〕的兼容性。DirectDraw主要供給了完成以下任務(wù)的工具:治理多頁(yè)面、直接訪問(wèn)視頻RAM〔flippinBackbufferinPalett裁剪Clipping、視頻端口〔Videopor。HardwareAbatractionLayeHAL〔HardwareLayer,HEL〕及硬件〔Hardware〕之間的關(guān)系。DirectDrawGDI位于同一層次,都通過(guò)一個(gè)與設(shè)備相關(guān)的抽象層來(lái)直接處理硬件設(shè)備。與GDI不同的是,DirectDraw會(huì)盡可能的利用硬件加速特性。假設(shè)硬件不支持某種特性,DirectDraw會(huì)使用硬件抽象層〔HEL〕試圖將該特性進(jìn)展軟件模擬。DirectDraw可以以設(shè)備環(huán)境〔DC〕的形式供給頁(yè)面存貯器,使得開(kāi)發(fā)者可以使用GDI的函數(shù)操作頁(yè)面對(duì)象。DirectDrawGDI、HAL、HEL、硬件的關(guān)系硬件操作層〔HardwareAbatractionLayer,HAL〕由硬件廠商供給,DirectDraw可以直接操作硬件,程序無(wú)須與HAL進(jìn)展接觸。相HAL供給的根底構(gòu)造,DirectDraw使用一樣的構(gòu)造讓?xiě)?yīng)用程序來(lái)顯示圖形。硬件制造商在Windows下實(shí)現(xiàn)的HAL16-bit32-bit的代碼。在WindowsNT下,HAL32-bit的代碼。HAL可以是顯示卡驅(qū)動(dòng)程序的一定義的。硬件抽象層〔HardwareEmulationLayer,HEL〕當(dāng)通過(guò)硬件操作層〔HAL〕硬件無(wú)法支持某些特性,DirectDraw就試圖對(duì)HEL模擬的。Direct3D組件Direct3D3D3DDirect3D〔ImmediateMode〔RetainedModeDirect3D保存Direct3D馬上模式之上。Direct3D為程序開(kāi)發(fā)人員供給了很多高級(jí)功能,如:可切換的三度緩沖(使z-bufferw-buffer),GouraudWindowsNT〔供給適宜的設(shè)備驅(qū)動(dòng)程序時(shí)CPUIntelMMXPentiumIIIAMD3DNow的構(gòu)造。DirectSound組件DirectSound供給了程序和音頻適配器的混音及播放功能之間的鏈接。還支持波形聲音的捕獲和播放。DirectSound為多媒體應(yīng)用程序供給低埋伏混合、硬。DirectSound設(shè)計(jì)目標(biāo)是提高聲音的輸出速度,實(shí)現(xiàn)多路聲音混合播放。DirectInput組件DirectInput為Windows環(huán)境的玩耍和實(shí)時(shí)多媒體應(yīng)用程序處理輸入設(shè)備信息,尤其對(duì)玩耍掌握器和力反響設(shè)備供給了完備的支持。DirectInput和其他DirectXDirectX調(diào)用驅(qū)動(dòng)程序來(lái)完成。DirectInput可識(shí)別三種根本設(shè)備類型:鍵盤(pán),標(biāo)準(zhǔn)系統(tǒng)鍵盤(pán)。鍵。稱,其范圍從簡(jiǎn)潔的玩耍桿直至虛擬現(xiàn)實(shí)的簡(jiǎn)單設(shè)備。DirectPlay組件DirectPlayAPI,它是一個(gè)用于連接傳輸協(xié)議和網(wǎng)絡(luò)設(shè)備之間的接口程序。DirectPlay支持多通信協(xié)議,可以運(yùn)行TCP/IPIPXModemDirectPlay還為將來(lái)的協(xié)議預(yù)備了很好的擴(kuò)展空間。DirectPlay供給了高級(jí)的〔例如,有保證或無(wú)保證的傳遞,慢速鏈接上的通訊扼殺,以及放棄連接檢測(cè)等〔包括玩家名稱表治理和點(diǎn)對(duì)點(diǎn)主機(jī)轉(zhuǎn)移。圖3-4DirectPlay體系構(gòu)造,以及它如何供給與通訊效勞供給層序無(wú)關(guān)的獨(dú)立性。3-4DirectPlay體系構(gòu)造Direct3D根底Direct3D設(shè)備3D3DAPI。扮演了聯(lián)系應(yīng)用程序和顯示設(shè)備的調(diào)度者的角色。Direct3DDirect3D渲(encapsulate)和存儲(chǔ)(store)渲染狀態(tài)它們之間的關(guān)系如以下圖所示:4-1Direct3D設(shè)備關(guān)系圖Direct3DDirect3D設(shè)備:一種是硬件抽象層(HAL)設(shè)備,應(yīng)用程序不能直接訪問(wèn)3-D加速卡。他們要調(diào)用Direct3D的函數(shù)和方法。Direct3DHALHAL,那么使用HAL設(shè)備就能獲得最好的性能。HAL設(shè)備具有硬件光柵化加速,并可用軟硬件頂點(diǎn)處理進(jìn)展著色操作;另一種是參考設(shè)備(REF)HAL設(shè)備由硬件驅(qū)動(dòng)程序表示。示硬件協(xié)同工作。應(yīng)用程序從不直接與HAL打交道。相反,通過(guò)隊(duì)L供給的根底,Direct3D供給了一組統(tǒng)一的接口和方法,應(yīng)用程序用這些接口和方法繪制/顯示圖形。Direct3D供給了用軟件模擬整個(gè)Direct3DAPI的REF設(shè)備,這使你能夠在設(shè)備不Direct3D特征編寫(xiě)和測(cè)試代碼。初始化Direct3D獵取Direct3D9接口IDirect3D9接口指針:IDirect3D9*_d3d9;_d3d9=Direct3DCreate9(D3D_SDKVERSION);IDirect3DDevice9對(duì)象。設(shè)備特征主要有:設(shè)備力量、顯示模式、格式和關(guān)于每個(gè)系統(tǒng)中其他可用設(shè)備的信息。檢測(cè)硬件頂點(diǎn)處理IDirect3DDevice9對(duì)象后,我們必需指定頂點(diǎn)處理類型以便使用。假設(shè)點(diǎn)處理,所以首先要檢測(cè)設(shè)備是否支持:RESULTIDirect3D9::GetDeviceCaps(UINTAdapter,D3DDEVTYPEDeviceType,D3DCAPS9*pCaps);檢查此適配器上的設(shè)備對(duì)期望使用的功能的支持度m_pd3dDevice->GetDeviceCaps(8rm_d3dCaps):然后檢測(cè)設(shè)備力量。實(shí)例化D3DPRESENT_PARAMETERS構(gòu)造成員變量D3DPRESENT_PARAMETERS構(gòu)造用于指定我們將要?jiǎng)?chuàng)立的IDirect3DDevice9對(duì)象的一些屬性。IDirect3DDevice9接口Direct3Ddevice對(duì)象的渲染狀態(tài)、燈光狀態(tài)以及執(zhí)行渲染操作。盡管設(shè)備支持三個(gè)設(shè)備接口(IDirect3DDevice,IDirect3DDevice3),但是程序中并不需要使用多個(gè)設(shè)備接DrawPrimitive方法或執(zhí)IDirect3DDevice3IDirect3DDevice2,它DrawPrimitive方法大大簡(jiǎn)化了預(yù)備IDirect3DDevice9對(duì)象:RESULTIDirect3D9::CreateDevice(DINTAdapter,D3DDEVTYPEDeviceType,HWNDhFocusWindow,DWORDBehaviorFlags,D3DPRESENT_PARAMETERS*pPresentationParameters,IDirect3DDevice9**ppReturnedDeviceInterface);hr=pD3D->CreateDevice(D3PTER_DEFAULT,dwDevType,hwnd,dwBehaviorFlags,&m_d3dpp,如_pd3dDevice):使用設(shè)備設(shè)備枚舉Direct3D設(shè)備。選擇一個(gè)被枚舉的設(shè)備對(duì)于設(shè)備的選擇,主要基于以下考慮:放棄全部不適合當(dāng)前顯示深度的設(shè)備。放棄全部明暗處理三角形的設(shè)備。debug模式,那么它不會(huì)使用硬件設(shè)備。Direct3D設(shè)備DrawPdmitive方法。這一選擇將打算在創(chuàng)立一個(gè)設(shè)備時(shí)程序需要獲得哪種類型的接口指針。irect3Ddevice接口的DrawPrimitiveIDirect3DDevice3接口的指針。渲染通道
4章仿真實(shí)現(xiàn)3D場(chǎng)景是怎樣顯示在屏幕上的呢?渲染通道負(fù)責(zé)創(chuàng)立由3D空間幾何描述和2D圖形,即是我們眼睛在顯示屏幕上所見(jiàn)的景象。模型表示們建模時(shí)對(duì)象的組成塊,我們將三角形歸為以下可互換的術(shù)語(yǔ):多邊形、簡(jiǎn)潔幾一個(gè)三角形。頂點(diǎn)模式上述的頂點(diǎn)定義在數(shù)學(xué)上是正確的,但當(dāng)我們?cè)贒irect3D運(yùn)用該概念時(shí),它顯得不夠完整。由于Direct3D中的頂點(diǎn)可能有指定位置之外的附加屬性。例如Direct3D在構(gòu)造頂點(diǎn)格式方面賜予我們很大的敏捷性,換句話說(shuō),讓我們可定義頂點(diǎn)的其他屬性。例如頂點(diǎn)位置和顏色。Struet ColorVertex{Float_x,_y,_z; //位置Dword_color; //顏色}(FVF)來(lái)描述我們創(chuàng)立頂點(diǎn)格式的方法。#defineFvF_COLOR(D3DFV_XYZ|D3DFvF_DIFFUSE)。三角形3D對(duì)象中的根本構(gòu)成塊。要?jiǎng)?chuàng)立對(duì)象,就必需創(chuàng)立三角形序列以例如,要?jiǎng)?chuàng)立一個(gè)矩形,我們將其分為兩個(gè)三角形。4.1頂點(diǎn)索引程度。要解決這一問(wèn)題我們需要用到索引這個(gè)概念:我們創(chuàng)立一個(gè)頂點(diǎn)序列和一個(gè)索引序列。頂點(diǎn)序列包括不同頂點(diǎn)的數(shù)據(jù),索引序列包括頂點(diǎn)序列的索引數(shù)據(jù),索引數(shù)據(jù)定義了這些三角形是怎樣相互連接。虛擬攝像機(jī)攝像機(jī)指定了觀看者所能觀察的空間范圍,即是我們需要為多大范圍的3D機(jī)的模型。把顯示屏目看作矩形時(shí),用平截頭體來(lái)表示顯得更加簡(jiǎn)潔理解。不在該范圍內(nèi)的對(duì)象是不行見(jiàn)的。簡(jiǎn)潔的設(shè)置虛擬攝像機(jī)的方法如下:首先,創(chuàng)立左手投影矩陣:5.3渲染通道ZD圖像。簡(jiǎn)潔的渲染路徑如下:5.4本地坐標(biāo)對(duì)于一個(gè)本地坐標(biāo)系來(lái)說(shuō)明的。世界坐標(biāo)旋轉(zhuǎn)、和縮放操作,涉及到對(duì)象在世界坐標(biāo)系中的位置、方向和模型大小。:D3DXATRIXmatworld:D3DXMATRIXmatseale;D3DXMATRIXmatTrans:x軸大小1.0f, //y軸大小1.0f); //z軸大小//天空位置D3DXMatrixTranslation(&matTrans,30.0f, //x坐標(biāo)60.0f, //y坐標(biāo)10.0f): //z坐標(biāo)//平移,大小轉(zhuǎn)換到世界坐標(biāo)系觀看坐標(biāo)系z(mì)坐標(biāo)系依據(jù)攝像機(jī)的位置—攝像機(jī)空間的原點(diǎn)—和方向重定位世界中的全部物體。D3DXMTRIX matView;D3DXMatrixLookAtLH(&MatView, 存放結(jié)果的地址&vFromPt, //Camera位置&vLookatPt, //Camera方向&vUpvec):; //y方向反面揀選反面揀選其實(shí)是一個(gè)很簡(jiǎn)潔的概念。就是:全部的三角形面,面對(duì)我們的面將會(huì)被渲染出來(lái)(可見(jiàn)),否則將不被渲染(不行見(jiàn),被揀選出來(lái)了)。舉個(gè)例子:假設(shè)(要想象成一塊方形紙片),我們把正面涂成紅色,反面(有透視眼者另當(dāng)別論)“反面揀選”Direct3D中有什么用呢?假設(shè)我們創(chuàng)立了一個(gè)封閉的立方體(要想象成一個(gè)方紙盒),那末“反面揀選”將使渲染更有效率。那么怎么知道那個(gè)面被渲染而哪個(gè)面被揀選(不渲染)呢?一切都在你定義的頂點(diǎn)的挨次上。假設(shè)你定義的三角形是順時(shí)針的,將會(huì)被渲染出來(lái);但假設(shè)你把Direct3D默認(rèn)是揀選逆時(shí)針的三角形。投影坐標(biāo)系透視變換中,xy11。Z方向的邊界值分別是,0移并縮放物體。D3DXMATRIXmatProj:D3DXMatrixPerspeetiveFovLH(&matProj,D3Dx_PI/4, //y向可見(jiàn)的角度范圍800.0f/600.0f, //平截頭體長(zhǎng)寬之比0.lf, //近平面距離500.0f); //遠(yuǎn)平面距離ECTION,&matProj);g_pd3dDeviee→SetTransfom(D3DTS_WORLD,&matworld);視口變換Direct3O中,可以用視口來(lái)聲明下面列出的特性:用來(lái)限制渲染的屏幕空間視口(screen-spaceviewport)。視口可以清空為這一材質(zhì)顏色depthbuff)z-buff裁剪空間是用來(lái)定義要顯示到渲染目標(biāo)外表上的局部場(chǎng)景的區(qū)域。假設(shè)選以免系統(tǒng)再渲染這一局部。Direct3D中的圖形顯示頂點(diǎn)和索引緩存頂點(diǎn)和索引緩存使用近似的方法和接口;頂點(diǎn)緩存只是包含頂點(diǎn)數(shù)據(jù)的相鄰染數(shù)據(jù)比在系統(tǒng)內(nèi)存中效率高得多。創(chuàng)立頂點(diǎn)和索引緩存HRESULTIDireet3DDevice9::CreateVertexBuffer(UINTLength,DWORDUsageDWORDFVF,D3DPoolPoolHANDLE*PSharedHandle);g_pd3dDevice→CreateVertexBuffer(4*sizeof(PANELVERTEX
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版電子商務(wù)知識(shí)產(chǎn)權(quán)保護(hù)合同簽署4篇
- 二手房購(gòu)買定金協(xié)議:2024年標(biāo)準(zhǔn)版版B版
- 二零二五版網(wǎng)絡(luò)信息安全技術(shù)服務(wù)合同范本2篇
- 2025版新產(chǎn)品發(fā)布宣傳片制作服務(wù)協(xié)議2篇
- 2025年度個(gè)人之間房屋買賣合同爭(zhēng)議解決條款范本2篇
- 二零二五版月子中心嬰兒早教及產(chǎn)后恢復(fù)服務(wù)合同2篇
- 2025年度個(gè)人藝術(shù)品拍賣委托協(xié)議4篇
- 2025年度摩托車轉(zhuǎn)讓與賽車俱樂(lè)部賽事運(yùn)營(yíng)管理協(xié)議
- JF工程2024年山西建筑安裝協(xié)議范本版B版
- 2025年毛紗產(chǎn)業(yè)智能化生產(chǎn)設(shè)備采購(gòu)合同4篇
- 光伏自發(fā)自用項(xiàng)目年用電清單和消納計(jì)算表
- 量子計(jì)算在醫(yī)學(xué)圖像處理中的潛力
- 阿里商旅整體差旅解決方案
- 浙江天臺(tái)歷史文化名城保護(hù)規(guī)劃說(shuō)明書(shū)
- 邏輯思維訓(xùn)練500題
- 第八講 發(fā)展全過(guò)程人民民主PPT習(xí)概論2023優(yōu)化版教學(xué)課件
- 實(shí)體瘤療效評(píng)價(jià)標(biāo)準(zhǔn)RECIST-1.1版中文
- 企業(yè)新春茶話會(huì)PPT模板
- GB/T 19185-2008交流線路帶電作業(yè)安全距離計(jì)算方法
- DIC診治新進(jìn)展課件
- 公路工程施工現(xiàn)場(chǎng)安全檢查手冊(cè)
評(píng)論
0/150
提交評(píng)論