亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Windows平臺下圖形渲染引擎的實(shí)現(xiàn)

        2018-04-24 07:58:58王建華
        現(xiàn)代計(jì)算機(jī) 2018年8期
        關(guān)鍵詞:剪裁立方體引擎

        王建華

        (四川大學(xué)計(jì)算機(jī)學(xué)院,成都 610065)

        1 需求分析

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

        3D游戲引擎是很復(fù)雜的,實(shí)現(xiàn)一個(gè)完整的3D游戲引擎不是一件易事,為了簡化項(xiàng)目復(fù)雜度并且保證引擎能進(jìn)行正常的工作,只實(shí)現(xiàn)3D游戲引擎的基礎(chǔ)圖形部分。因?yàn)檫@個(gè)部分可以將游戲的輸入數(shù)據(jù)轉(zhuǎn)化為輸出圖形,并在屏幕上進(jìn)行顯示,人們所能接收的經(jīng)過處理的信息就是顯示在屏幕上的圖形,這個(gè)部分的好壞直接影響到了使用該3D圖形渲染引擎開發(fā)的游戲的體驗(yàn)。

        2 管線設(shè)計(jì)

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

        圖1

        3 模塊功能設(shè)計(jì)

        (1)頂點(diǎn)緩沖區(qū)

        用于存儲用戶輸入頂點(diǎn)的位置數(shù)據(jù),顏色數(shù)據(jù),法線數(shù)據(jù),并存儲各頂點(diǎn)在攝相機(jī)坐標(biāo)系下的深度值,為三角形繪制時(shí)的插值計(jì)算提供必須的深度值。頂點(diǎn)緩沖區(qū)還應(yīng)提供復(fù)制的功能,以及能對頂點(diǎn)進(jìn)行變換的接口。

        (2)索引緩沖區(qū)

        用于存儲由頂點(diǎn)所構(gòu)成的平面的面數(shù)據(jù)(為了便于計(jì)算,統(tǒng)一采用三角形平面)這些數(shù)據(jù)有:構(gòu)成三角形的三個(gè)頂點(diǎn)的序號,三角形的頂點(diǎn)的卷繞方式,三角形平面的面顏色,三角形平面的紋理以及其各頂點(diǎn)的紋理坐標(biāo)。索引緩沖區(qū)還應(yīng)提供平面的背面剪裁功能,及時(shí)剔除不需要進(jìn)行繪制的平面,減少不必要的計(jì)算開銷,提升引擎的渲染效率。

        (3)屏幕緩沖區(qū)

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

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

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

        (5)圖片采樣器

        用于讀取資源圖片,并生成MipMap所需的減采樣后的紋理,并負(fù)責(zé)對圖片的存儲結(jié)構(gòu)進(jìn)行分析,得到所需要的像素的顏色,在圖片使用完后,負(fù)責(zé)資源的釋放工作,防止內(nèi)存資源過于緊張。

        (6)場景圖

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

        4 變換設(shè)計(jì)[2]

        (1)世界空間變換

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

        (2)視點(diǎn)空間變換

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

        (3)剪裁空間變換

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

        (4)標(biāo)準(zhǔn)空間變換

        將剪裁空間的非標(biāo)準(zhǔn)立方體轉(zhuǎn)化為一個(gè)標(biāo)準(zhǔn)立方體,標(biāo)準(zhǔn)化的好處是可以更好地表現(xiàn)出各點(diǎn)的位置關(guān)系,并且為后續(xù)工作的進(jìn)行奠定了基礎(chǔ)。

        (5)屏幕空間變換

        將標(biāo)準(zhǔn)空間中的點(diǎn)變換到屏幕空間中用以顯示,這個(gè)過程的一個(gè)非常重要的任務(wù)是進(jìn)行相應(yīng)的左右手系的變換以便正確顯示計(jì)算結(jié)果。

        5 繪制示例

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

        圖2

        6 結(jié)語

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

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

        參考文獻(xiàn):

        [1]David.H.Eberly.3D游戲引擎設(shè)計(jì),實(shí)時(shí)計(jì)算機(jī)圖形學(xué)的應(yīng)用方法[M].北京:清華大學(xué)出版社,2013.

        [2]王長波,高巖.3D計(jì)算機(jī)圖形學(xué)[M].北京:機(jī)械工業(yè)出版社,2010:10-90.

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

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

        [5]石教英.虛擬現(xiàn)實(shí)基礎(chǔ)及使用算法[M].北京:科學(xué)出版社,2002.

        猜你喜歡
        剪裁立方體引擎
        疊出一個(gè)立方體
        心靈手巧的“剪裁師”——卷葉象甲
        渾然一體有玄奧——寫人作文之人事“剪裁”與“拼接”
        論報(bào)紙圖片編輯如何巧“剪裁”
        新聞傳播(2018年10期)2018-08-16 02:10:08
        藍(lán)谷: “涉藍(lán)”新引擎
        商周刊(2017年22期)2017-11-09 05:08:31
        圖形前線
        立方體星交會對接和空間飛行演示
        太空探索(2016年9期)2016-07-12 09:59:53
        折紙
        無形的引擎
        河南電力(2015年5期)2015-06-08 06:01:46
        基于Cocos2d引擎的PuzzleGame開發(fā)
        蜜桃视频在线观看免费亚洲 | 成年女人粗暴毛片免费观看| 久久精品人妻一区二区三区| 天堂av一区二区在线观看| 亚洲精品综合久久国产二区| 嗯啊好爽高潮了在线观看| 天天躁日日躁狠狠很躁| 国产精品久久码一区二区| 亚洲麻豆av一区二区| 末成年人av一区二区| 男女裸交无遮挡啪啪激情试看| 亚洲日韩一区二区一无码| 国产视频在线播放亚洲| 免费日本一区二区三区视频| 无码中文字幕日韩专区视频| 极品 在线 视频 大陆 国产| 日本高清一区在线你懂得| 久久久久亚洲精品男人的天堂| 秋霞午夜无码鲁丝片午夜精品| 无码在线观看123| 国产成人av区一区二区三| 人人妻人人澡人人爽国产一区| 欧美综合自拍亚洲综合图片区 | 日本午夜精品一区二区三区| 国产欧美日韩精品专区| 久久久男人天堂| 国产精品一级黄色大片| 91中文人妻熟女乱又乱| 青青草原综合久久大伊人| 加勒比日本东京热1区| 日本高清一区二区不卡| 午夜免费啪视频| 91av手机在线观看| 丁香婷婷激情俺也去俺来也| 午夜人妻久久久久久久久| 麻豆高清免费国产一区 | 亚洲av福利院在线观看| 成人精品综合免费视频| 玖玖资源站无码专区| 24小时免费在线观看av| 撕开奶罩揉吮奶头视频|