999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于DirectX庫的游戲引擎的實現(xiàn)

2017-04-26 20:16:47董佳駒詹玲超秦興杰王坡
科技資訊 2017年6期

董佳駒+詹玲超+秦興杰+王坡

摘 要:DirectX庫不只是圖形的API函數(shù),也是實現(xiàn)多用途的API函數(shù),在此基礎上借鑒Unity引擎組件+對象框架的模式設計了一款基于DirectX庫的游戲引擎。該文的主要工作是引擎組件和對象的實現(xiàn)。引擎組件主要包括渲染組件、物理組件和動畫組件,其中渲染組件從變換、網格和材質3個方面實現(xiàn)。引擎對象包括三大系統(tǒng),分別是攝像機系統(tǒng)、地形系統(tǒng)和光照系統(tǒng)。這樣就實現(xiàn)了一個游戲引擎。

關鍵詞:DirextX庫 游戲引擎 組件對象

中圖分類號:TP393 文獻標識碼:A 文章編號:1672-3791(2017)02(c)-0008-02

DirectX庫是微軟針對Windows操作系統(tǒng)的非實時性推出的一個開發(fā)庫,目的是讓圖形圖像、動畫、多媒體和游戲程序開發(fā)人員在Windows開發(fā)環(huán)境下很容易地編制高級程序。該游戲引擎就是基于該庫設計制造的。一個游戲就如同一輛汽車,是由一個個的零部件拼接組裝而成。而游戲引擎和游戲是部分對整體的關系,就如同汽車的發(fā)動機一樣,是一個不可或缺的載體。游戲引擎借鑒了Unity引擎組件+對象的框架模式。該框架的主要特點是用一個對象來表示三維空間中的位置。該框架的最大亮點是實現(xiàn)腳本模塊。有了這樣的框架就能進行引擎組件和對象的實現(xiàn)。組件主要分為渲染組件、物理組件動畫組件,對象包含攝像機、地形以及光照。

1 引擎組件

引擎組件是實際功能的承載者,是整個代碼的核心。這里按照功能分類,分別為渲染組件、物理組件和動畫組件。

1.1 渲染組件

渲染組件主要由變換、網格和材質來承載。在游戲里方位是一個重要的屬性,方位包含物體的位置、方向和大小,主要依靠幾何坐標變換來實現(xiàn),變換由平移、旋轉和縮放構成,每一個變換可以由一個矩陣來表達和計算,這就是變換組件的實現(xiàn)。

在游戲里,物體模型是通過多邊形網格來逼近表示,網格模型文件可以將物體輪廓的頂點位置、紋理和材質等存儲在一個外部文件中。但是網格模型可能包含一些冗余的數(shù)據(jù),就有必要通過算法對網格模型進行優(yōu)化,刪除一些多余的信息。從外部文件中通過網格組件加載并渲染該網格是該組件的主要作用,這就是網格組件的實現(xiàn)。

還有,材質也是物體的一個重要屬性,材質決定物體能夠反射哪些顏色的光線。在DirectX庫中有一個結構體記錄物體表面材質屬性,該結構體包含4個參數(shù),物體頂點顏色的亮度就由這4個參數(shù)來決定,其計算公式是:物體的最終顏色=物體反射環(huán)境率+物體反射漫反射率+物體反射鏡面反射率+自發(fā)光,這就是材質組件的實現(xiàn)。

1.2 物理組件

物理組件主要是實現(xiàn)外力效果、摩擦力效果、反彈效果和碰撞等其他物理效果。在物理模塊中,通過聲明Physics Effect類作為物理組件類,其構造函數(shù)初始化相關數(shù)據(jù)。通過該類生成很多效果函數(shù),方便調用。

1.3 動畫組件

動畫之所以能動起來是因為有數(shù)據(jù)記錄了每個時間點物體網格各個頂點所在的具體位置,通過插值算法計算兩個網格頂點的位置,實現(xiàn)網格的平滑移動,在60幀及以上的幀率下就能看到一個會動的網格,這就是該引擎的動態(tài)顯示原理。在動畫組件中聲明Animation Effect類作為動畫組件類,其構造函數(shù)初始化相關函數(shù)。

2 引擎對象

這里主要分為3個系統(tǒng),分別為攝像機系統(tǒng)、地形系統(tǒng)和光照系統(tǒng)。

2.1 攝像機系統(tǒng)

在攝像機系統(tǒng)中,首先需要實現(xiàn)出取景變換矩陣。其核心思想是:確定攝像機對象的方位。根據(jù)攝像機的方位計算出其方位矩陣并通過計算來獲得取景變換矩陣。取景變換本質是解決如何以攝像機作為新的坐標原點來表示原來三維世界中物體坐標的問題。換一種方式就是說坐標系中的物體需要隨著攝像機一起進行方位變換,來達到攝像機自身坐標系與世界坐標系完全重合的目的,如圖1所示。

2.2 地形系統(tǒng)

在三維世界里,地形是一個非常重要的元素。沒有光照,沒有大地,沒有各種生物,就不能稱之為世界。在討論地形系統(tǒng)的實現(xiàn)原理前,先看圖2的幾張圖。

可以發(fā)現(xiàn)上面這三張圖似乎存在著某種關聯(lián)。首先在圖2(a)上可以看到,一個個網格頂點有規(guī)律的排列著,這里每個點都可以用二維坐標(x,y)來表示。而圖2(b)則在圖2(a)的基礎上增加了高度這個屬性,可以說圖2(a)是平面的,而在圖2(b)上每個點在原來的方位上有了不同的高度,這時每個點可以用三維坐標(x,y,z)來表示,這樣就把一張二維的圖變成了一張三維的圖,地形便出來了。而圖2(c)則在第二張圖的基礎上添加了紋理圖片,這樣一個逼真的地形就顯示出來了。

2.3 光照系統(tǒng)

計算機所描繪的三維世界作為現(xiàn)實世界的高度逼真的模仿,必然需要光照系統(tǒng)。在光照系統(tǒng)中可以使用光照功能,只需要告訴光照系統(tǒng)需要使用什么類型的光照,而不用為物體的每個網格頂點都指定顏色值,然后調用DirectX庫的光照設置函數(shù),該函數(shù)就會根據(jù)其內置的算法計算出每個頂點的顏色值,從而產生出逼真的光照效果。

3 結語

游戲引擎只是游戲的一個“零部件”,是一個游戲的載體。游戲的渲染和實現(xiàn)都是基于這個載體之上。真正創(chuàng)建出一個3D游戲世界,還需要使用Windows編程編寫Windows應用程序,讓三維世界有一個可以被呈現(xiàn)的載體。通過該游戲引擎所創(chuàng)建的三維世界,還是需要編寫簡單的代碼產生程序窗口,并通過該游戲引擎來創(chuàng)建一個簡單的三維世界。

參考文獻

[1] Jason Gregory.游戲引擎架構[M].北京:電子工業(yè)出版社,2014.

[2] Frank D Luna.DIRECTX 9.0 3D游戲開發(fā)編程基礎[M].北京:清華大學出版社,2012.

[3] Jim Adams.DirectX高級動畫制作[M].重慶:重慶大學出版社,2013.

主站蜘蛛池模板: 尤物精品国产福利网站| 精品日韩亚洲欧美高清a| 国产视频自拍一区| 99在线视频网站| 亚洲成人网在线观看| 国产欧美日韩精品综合在线| 91黄色在线观看| 国产一级裸网站| 99精品热视频这里只有精品7| 日本日韩欧美| 无码网站免费观看| 国产精品欧美亚洲韩国日本不卡| 亚洲第一视频区| 99视频精品全国免费品| 57pao国产成视频免费播放| 亚洲国产中文欧美在线人成大黄瓜| 精品在线免费播放| 久久综合伊人 六十路| 伊人久久久久久久久久| 99久久人妻精品免费二区| 欧美黄网站免费观看| yy6080理论大片一级久久| 呦女亚洲一区精品| 国产一区在线视频观看| 亚洲色欲色欲www网| 国产精品免费久久久久影院无码| 91网红精品在线观看| 亚洲区第一页| 婷五月综合| 亚洲美女操| 国产精鲁鲁网在线视频| 国产在线观看一区精品| 久久精品女人天堂aaa| 色综合热无码热国产| 欧美精品三级在线| 亚洲欧美成人在线视频| 丁香五月婷婷激情基地| 狂欢视频在线观看不卡| 婷婷99视频精品全部在线观看| 亚洲人成电影在线播放| 亚洲欧洲一区二区三区| 亚洲一级毛片免费看| 一级毛片在线免费看| 国产欧美日韩资源在线观看| 国产免费久久精品99re不卡| 一级毛片免费观看不卡视频| 黄色一级视频欧美| 第一页亚洲| 精品一区二区久久久久网站| 欧美激情伊人| 97国产精品视频自在拍| 91久久青青草原精品国产| 高清不卡一区二区三区香蕉| 9啪在线视频| 巨熟乳波霸若妻中文观看免费| 亚洲国内精品自在自线官| 欧美黄色网站在线看| 激情午夜婷婷| 国产高清精品在线91| 91娇喘视频| 亚洲成人动漫在线| 欧洲av毛片| 国产精品污视频| 麻豆国产原创视频在线播放 | 啪啪永久免费av| 国产精品爆乳99久久| 久久伊人色| 青青青草国产| 毛片一级在线| 国产精品一区二区在线播放| 毛片一级在线| 91免费片| 欧美日韩第三页| 亚洲一级无毛片无码在线免费视频| 国产成人精品高清在线| 亚洲va视频| 国产精品99久久久久久董美香| 国内99精品激情视频精品| 亚洲精品第五页| 天天色天天操综合网| 婷婷色一二三区波多野衣| 日韩a级毛片|