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

Windows平臺下圖形渲染引擎的實現

2018-04-24 07:58:58王建華
現代計算機 2018年8期
關鍵詞:引擎游戲

王建華

(四川大學計算機學院,成都 610065)

1 需求分析

游戲引擎[1],是經過精心設計,可以對游戲進行基礎支持的一系列實時處理模塊的有機結合,是游戲的核心程序。在游戲中,玩家所體驗到的場景的運行速度、絢麗的特效,真實的渲染效果等各方面都是由游戲引擎決定的。3D游戲引擎是游戲引擎中的一個難點,是為3D游戲量身定做的一系列工具的總和,要比2D環境下的引擎的設計復雜得多。

3D游戲引擎是很復雜的,實現一個完整的3D游戲引擎不是一件易事,為了簡化項目復雜度并且保證引擎能進行正常的工作,只實現3D游戲引擎的基礎圖形部分。因為這個部分可以將游戲的輸入數據轉化為輸出圖形,并在屏幕上進行顯示,人們所能接收的經過處理的信息就是顯示在屏幕上的圖形,這個部分的好壞直接影響到了使用該3D圖形渲染引擎開發的游戲的體驗。

2 管線設計

由于包含著色器的3D渲染引擎的實現比較復雜,不便于初學者理解,本文采用比較容易實現的固定管線,雖然固定管線的渲染效果比著色器的渲染效果差,但是其工作流程十分清晰,原理也比較容易理解,便于初學者掌握,并激發其在這個方向上繼續研究下去的動力。管線最終的流程如圖1所示。

圖1

3 模塊功能設計

(1)頂點緩沖區

用于存儲用戶輸入頂點的位置數據,顏色數據,法線數據,并存儲各頂點在攝相機坐標系下的深度值,為三角形繪制時的插值計算提供必須的深度值。頂點緩沖區還應提供復制的功能,以及能對頂點進行變換的接口。

(2)索引緩沖區

用于存儲由頂點所構成的平面的面數據(為了便于計算,統一采用三角形平面)這些數據有:構成三角形的三個頂點的序號,三角形的頂點的卷繞方式,三角形平面的面顏色,三角形平面的紋理以及其各頂點的紋理坐標。索引緩沖區還應提供平面的背面剪裁功能,及時剔除不需要進行繪制的平面,減少不必要的計算開銷,提升引擎的渲染效率。

(3)屏幕緩沖區

用于存儲屏幕某點最終應該顯示的顏色,對于有多個3D空間中的點都會變換到同一屏幕上的點的情況,為了簡化問題,認為所有的平面都是不透明的,不進行顏色遮罩處理,而是簡單地選取距離攝相機最近的點的顏色作為此點的最終色,在一次繪制完成后,清空屏幕緩沖區,然后進行下一次繪制。

(4)幾何變換中的基本工具

為固定管線提供基本的功能支持,這些工具包括,三維向量,四維向量,三階矩陣,四階矩陣,攝相機,管線中經常要使用這些工具,例如,可用其進行所需的各種變換,將3D空間中的點映射到屏幕空間上。

(5)圖片采樣器

用于讀取資源圖片,并生成MipMap所需的減采樣后的紋理,并負責對圖片的存儲結構進行分析,得到所需要的像素的顏色,在圖片使用完后,負責資源的釋放工作,防止內存資源過于緊張。

(6)場景圖

用于處理多對象之間有層次關系的情境,只需對頂層實體進行變換,即可實現對其子實體的級連變換,很大程度上簡化了使用此3D圖形渲染引擎的游戲開發者的工作,使其將更多的精力投入到游戲其他方面的設計與制作中,提升開發游戲的效率,縮短游戲的開發周期。

4 變換設計[2]

(1)世界空間變換

在3D圖形程序中,有些物體的位置在整個程序運行期間都不會變化(相對于游戲世界),我們稱其為靜態對象;而有些物體不是靜止不動的,而是需要根據輸入的參數或根據自身的運行狀態進行動態調整的,我們稱其為動態對象。對于后者,我們應提供一些必要的動態變換功能,例如對象的平移和旋轉,有了這個功能以后,用戶就可以很方便地對動態對象進行控制,使對象能按設定的模式進行工作,而不用在每幀更新時輸入對象在新位置的數據,因為其在新位置的數據會自動計算,在很在程度上減少了用戶的工作量。

(2)視點空間變換

我們需要通過模擬人眼觀察物體的過程或模擬照相機攝像的過程來實現較為真實的渲染,因此需要將全部對象轉換到視點坐標系下,在這個坐標系下,攝相機處在原點位置,攝相機的朝向向量,攝相機的俯仰程度向量,以及一個側向向量構成了此坐標系的三個基向量,這樣做符合人們的日常生活經驗,便于人們理解和接受。在攝相機空間中,我們需要進行平面的背面剪裁,及時剔除無需考慮的內容,提升系統的效率。

(3)剪裁空間變換

對視角空間進行進一步的變換,將由近平面,遠平面,左平面,右平面,上平面和下平面組成的一個平頭視錐體轉化為一個立方體,由于對立方體的剪裁效率要遠遠大于不規則形體的剪裁效率[4],所以通過這個變換,降低了后續的視椎體剪裁操作的計算量,減少了資源的消耗。

(4)標準空間變換

將剪裁空間的非標準立方體轉化為一個標準立方體,標準化的好處是可以更好地表現出各點的位置關系,并且為后續工作的進行奠定了基礎。

(5)屏幕空間變換

將標準空間中的點變換到屏幕空間中用以顯示,這個過程的一個非常重要的任務是進行相應的左右手系的變換以便正確顯示計算結果。

5 繪制示例

在此示例中,存在一個天空盒,天空盒[5]實際上是在立方體的內部觀察立方體,并且將圖片貼在立方體內側而形成的。在立方體的中心放置了一個攝相機用于觀察,攝相機會不停地進行水平旋轉,因此可見內容會隨著時間而出現周期性變化,實驗總共使用了3張圖片用來進行貼圖操作,其中,一張用于地面貼圖,一張用于天空貼圖,還有一張用于四周景色的貼圖。在此示例中采用透視投影,因此會出現近大遠小的感覺,距離攝相機近的貼圖會有明顯的拉伸感,見圖2:從中可以看出,總體渲染效果能滿足一般的3D圖形程序的要求,但是由于浮點數的誤差,在兩個平面的交接處,有可能會出現一點黑色的縫隙。

圖2

6 結語

本文利用C++語言[3]和Visual Studio 2015開發工具,實現了3D游戲引擎中的渲染部分,并通過對圖形渲染部分的詳細說明,使讀者對3D游戲引擎中的渲染部分有了更深入的了解。

當前完成的3D渲染引擎實現了進行3D渲染時所用的基本功能,還可以完成一些較為高級的功能,但是這僅僅是一個示例性質的引擎,并沒有諸如資源管理、配套的開發工具和與硬件良好結合等在商業用的高端引擎中存在的一些特性,因此這個引擎是不完善的,有著很大的改進空間,但是此示范性引擎的優點在于以通俗易懂的方式向讀者闡明了3D渲染引擎的一種實現方式,達到了便于理解和掌握這一目的。

參考文獻:

[1]David.H.Eberly.3D游戲引擎設計,實時計算機圖形學的應用方法[M].北京:清華大學出版社,2013.

[2]王長波,高巖.3D計算機圖形學[M].北京:機械工業出版社,2010:10-90.

[3]Charles.Petzold著.Windows程序設計.方敏,張勝等譯.北京:清華大學出版社,2010:506-642.

[4]David.F.Rogers著.計算機圖形算法基礎[M].石教英,彭群生等譯.北京:機械工業出版社,2005.

[5]石教英.虛擬現實基礎及使用算法[M].北京:科學出版社,2002.

猜你喜歡
引擎游戲
以學促干 挺膺擔當 激活砥礪前行的紅色引擎
三生 三大引擎齊發力
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
游戲
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
第八章 直接逃出游戲
小學科學(2015年6期)2015-07-01 14:30:14
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
主站蜘蛛池模板: 亚洲男人天堂久久| 午夜不卡视频| 97成人在线观看| 日韩精品一区二区三区视频免费看| 热re99久久精品国99热| 久久视精品| 午夜福利无码一区二区| 在线观看的黄网| 久久精品国产999大香线焦| 97国产精品视频自在拍| 国产视频a| 特级欧美视频aaaaaa| 不卡国产视频第一页| 欧洲高清无码在线| 精品国产女同疯狂摩擦2| 91精品人妻互换| 99久久国产综合精品2023| 国产福利影院在线观看| 19国产精品麻豆免费观看| 中文成人在线| 亚洲欧美成aⅴ人在线观看| 国产成人高清亚洲一区久久| 麻豆精品在线视频| 伊人丁香五月天久久综合 | 欧美啪啪网| 国产呦精品一区二区三区下载| 日本精品影院| 欧美区日韩区| 亚洲男人天堂2020| 天堂成人在线视频| 国产成人高精品免费视频| 亚洲欧洲一区二区三区| 午夜欧美在线| 国产第一页亚洲| 日韩精品一区二区三区中文无码| 国产成人区在线观看视频| 亚洲第一页在线观看| 欧美中文一区| 午夜性刺激在线观看免费| 亚洲欧美激情小说另类| 毛片网站在线看| 92精品国产自产在线观看| 老司机精品久久| 99re热精品视频国产免费| 亚洲熟女中文字幕男人总站| 尤物精品视频一区二区三区| 亚洲精品国产综合99| 久久永久精品免费视频| 狠狠色狠狠色综合久久第一次| 日本成人福利视频| 亚洲无码高清视频在线观看| 国产成人精品一区二区三在线观看| 国产91视频观看| 激情无码视频在线看| 夜精品a一区二区三区| 欧美三级自拍| 国产精品久久久久无码网站| 伊人五月丁香综合AⅤ| 久久综合亚洲鲁鲁九月天| 婷婷丁香色| 国产黄色片在线看| 欧美亚洲综合免费精品高清在线观看 | 另类重口100页在线播放| 欧洲精品视频在线观看| 噜噜噜综合亚洲| 中文字幕永久在线观看| 免费在线国产一区二区三区精品| 91丝袜在线观看| 欧美激情伊人| 一本色道久久88| 国产精品自在在线午夜区app| 人妻一区二区三区无码精品一区| 国产精品成人AⅤ在线一二三四| 国产成人精品第一区二区| 福利一区在线| 露脸一二三区国语对白| 日韩av在线直播| 国产精品福利在线观看无码卡| 亚洲第一色网站| 制服无码网站| 亚洲精品成人福利在线电影| 亚洲男人天堂网址|