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.

主站蜘蛛池模板: 亚洲国产成人无码AV在线影院L| 极品国产在线| 婷婷五月在线视频| 成人精品亚洲| 色网站在线视频| 一级毛片免费观看不卡视频| 色亚洲成人| 国内精自视频品线一二区| 亚洲激情99| 国产精品99久久久久久董美香| 爽爽影院十八禁在线观看| 制服丝袜在线视频香蕉| 久久婷婷色综合老司机| 日韩欧美成人高清在线观看| 久久黄色免费电影| 国产精品任我爽爆在线播放6080| 欧美一区二区福利视频| 色婷婷电影网| 免费国产高清精品一区在线| 久久这里只有精品免费| 国产自产视频一区二区三区| 精品黑人一区二区三区| 日韩精品毛片| 国产精品第一区在线观看| 色婷婷电影网| 69av免费视频| 欧美成人看片一区二区三区| 福利视频一区| 麻豆精品国产自产在线| 在线观看亚洲人成网站| 在线看片免费人成视久网下载| 亚洲第一黄片大全| 中国国语毛片免费观看视频| 久久大香香蕉国产免费网站| 四虎亚洲精品| 东京热一区二区三区无码视频| 成人免费午夜视频| 日韩福利在线观看| 99热这里都是国产精品| 99久久国产综合精品2020| 成人午夜免费观看| 日本午夜精品一本在线观看| 波多野结衣久久精品| 欧美亚洲国产一区| 国产美女精品一区二区| www.日韩三级| 日韩中文精品亚洲第三区| 色天天综合| 欧美精品导航| 国产成人综合在线观看| 久久亚洲精少妇毛片午夜无码| 欧美日本在线观看| 国产成人一区| 波多野结衣一区二区三视频 | 久久久久人妻精品一区三寸蜜桃| 久久96热在精品国产高清| 亚洲大学生视频在线播放| 久久久国产精品免费视频| 自拍偷拍欧美日韩| 国产最新无码专区在线| 免费一看一级毛片| 亚洲一区精品视频在线| 国产久草视频| 91探花在线观看国产最新| 欧美一级在线看| 青青青国产精品国产精品美女| 国产丝袜无码精品| 天堂在线www网亚洲| 亚洲精品中文字幕午夜| 精品一区二区三区水蜜桃| 国产一级毛片网站| 国产亚洲精久久久久久久91| 亚洲成人手机在线| 美女一级毛片无遮挡内谢| 欧洲亚洲一区| 亚洲中文字幕97久久精品少妇| 在线欧美a| 亚洲一级无毛片无码在线免费视频 | 久久熟女AV| 亚洲无码精彩视频在线观看| 天天干天天色综合网| 999国产精品永久免费视频精品久久|