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麻豆| 中文字幕 91| 全部免费特黄特色大片视频| 久久婷婷五月综合97色| 亚洲av无码片一区二区三区| 99青青青精品视频在线| 久久精品人人做人人爽电影蜜月| 国产一区二区三区在线观看视频| 欧美三级视频网站| 国产午夜一级毛片| 亚洲一区二区约美女探花| 亚洲AV一二三区无码AV蜜桃| 黄色一及毛片| 日韩无码视频专区| 91高清在线视频| 91精品情国产情侣高潮对白蜜| 国产主播喷水| 无码有码中文字幕| 国产一区二区福利| 国产欧美日韩在线一区| 91小视频版在线观看www| 午夜国产精品视频| 国产一区二区福利| 国产一二三区在线| 国产成人艳妇AA视频在线| 亚洲精品午夜天堂网页| 中文字幕av无码不卡免费| 亚洲一区精品视频在线| 久久天天躁夜夜躁狠狠| 久久77777| 亚洲欧洲日本在线| 中国丰满人妻无码束缚啪啪| 久久夜色精品国产嚕嚕亚洲av| 亚洲精选高清无码| 国产精品成人一区二区| 亚洲日本韩在线观看| 九九久久99精品| 国产精品夜夜嗨视频免费视频| 日本道综合一本久久久88| 日韩精品高清自在线| 久久亚洲国产视频| 亚洲国产黄色| 2021国产乱人伦在线播放| 亚洲无码37.| 88av在线| 久久婷婷六月| 久久黄色免费电影| 国产h视频免费观看| 国内丰满少妇猛烈精品播| 久久精品最新免费国产成人| 亚洲天堂久久| 国产95在线 | 亚洲永久视频| av大片在线无码免费| 国产AV无码专区亚洲精品网站| 欧美精品啪啪| 欧美一级黄色影院| 久久精品国产一区二区小说| 制服丝袜一区二区三区在线| 国产自在线播放| a毛片在线播放| 国产一区二区影院| 欧美亚洲国产精品第一页| 一本久道久综合久久鬼色| 日韩无码视频网站| 色老头综合网| 国产福利2021最新在线观看| 欧美日韩国产高清一区二区三区| 亚洲欧美不卡中文字幕| 日韩午夜福利在线观看| 久久激情影院| 亚洲一欧洲中文字幕在线| 九九久久精品国产av片囯产区| 亚洲无限乱码一二三四区| 人妻中文久热无码丝袜| 久久福利网| 日本草草视频在线观看| 重口调教一区二区视频| 久久亚洲精少妇毛片午夜无码 | 91精品国产自产在线老师啪l| 在线观看亚洲国产|