• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            永遠(yuǎn)也不完美的程序

            不斷學(xué)習(xí),不斷實(shí)踐,不斷的重構(gòu)……

            常用鏈接

            統(tǒng)計(jì)

            積分與排名

            好友鏈接

            最新評論

            AIR引擎開發(fā)總結(jié)(一)

            一、地形篇
            1、地形網(wǎng)格。
                AIR引擎的地形設(shè)計(jì),是基于四叉樹的管理,既然用了四叉樹,就有相對應(yīng)的地塊數(shù)據(jù),在AIR引擎里面是TerrainBlock。一個(gè)地塊可以理解成一個(gè)網(wǎng)格數(shù)據(jù)的封裝,也是一個(gè)Renderable(可渲染物),四叉樹中放的就是這些地塊的對象。而地塊在場景加載的時(shí)候,是通過高度圖加載的。現(xiàn)階段地形是行和寬的頂點(diǎn)數(shù)必須是一樣的,并且一定要是2的N次方加1,這樣才能平均劃分出NXN個(gè)地塊。而這里需要注意的是,地塊邊的頂點(diǎn)不能大于129,因?yàn)槌^這個(gè)數(shù),索引的最大值就超過了16位最大值。
                而最關(guān)心的地形頂點(diǎn)與索引數(shù)據(jù),我在引擎里面是這樣實(shí)現(xiàn)的,每個(gè)地塊一個(gè)獨(dú)立的VertexBuffer,所有地塊共享一系列的IndexBuffer(為什么這樣做,與LOD有關(guān))。VertexBuffer根據(jù)地形高度圖和一個(gè)塊的大小配置已經(jīng)生成好了,而IndexBuffer,是根據(jù)地形的大小和可能存在的LOD的情況生成(下面會(huì)介紹生成算法)。
            2、地形LOD。
                地形的LOD是根據(jù)地塊離眼睛的距離,地塊的陡峭程度決定的,如果地塊完全是平的,當(dāng)然取最大層的LOD就行了。
                IndexBuffer生成:每個(gè)塊會(huì)有一到四個(gè)地相阾塊,而它們的LOD值不一定一樣,IndexBuffer的生成就是根據(jù)這個(gè)地塊相阾四塊的LOD差值和它當(dāng)前的LOD值生成的,這樣也就解決了裂縫的問題。
                優(yōu)化:之前我的做法是在引擎啟動(dòng)的時(shí)候,就生成了所有地塊可能存在的LOD差值情況下的IndexBuffer,在四層LOD的環(huán)境中,生成了300多個(gè)IndexBuffer,內(nèi)存也升高了100M左右。而我在后來的做法中,一開始并不需要生成所有IndexBuffer,而是在渲染過程中根據(jù)當(dāng)時(shí)的LOD差值來動(dòng)態(tài)生成,下次再查找的時(shí)候,如果已經(jīng)存在這個(gè)IndexBuffer就不用生成了。這樣既省了內(nèi)存,也省了加載時(shí)間。
            3、地形紋理。
                AIR引擎的地塊紋理是每個(gè)地塊最多4張紋理,一張索引紋理,索引紋理是RGBA四個(gè)通道決定四張紋理的像素比例。
            4、渲染流程。
                相機(jī)裁剪->計(jì)算裁剪后的地塊的LOD->地塊放入渲染隊(duì)列->獲得當(dāng)前的IndexBuffer->渲染。

            posted on 2011-11-26 21:01 狂爛球 閱讀(1035) 評論(2)  編輯 收藏 引用 所屬分類: 圖形編程

            評論

            # re: AIR引擎開發(fā)總結(jié)(一) 2011-11-27 17:48 daroubing

            可以看看游戲編程精粹2中的地形lod算法  回復(fù)  更多評論   

            # re: AIR引擎開發(fā)總結(jié)(一) 2011-12-15 13:40 hehe

            可以看看ogre1.7以后的基于Chunked-LOD的Terrain地形算法,它的IndexBuffer使用共享的相當(dāng)多,僅使用了少量的IndexBuffer塊  回復(fù)  更多評論   

            欧美牲交A欧牲交aⅴ久久| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 久久免费看黄a级毛片| 午夜欧美精品久久久久久久| 国产精品99久久免费观看| 久久久久国色AV免费看图片| 国产免费久久精品99re丫y| www.久久热| 囯产极品美女高潮无套久久久| 精品综合久久久久久888蜜芽| 亚洲国产成人久久综合野外| 精品国产乱码久久久久久1区2区| 性欧美大战久久久久久久| 狠狠干狠狠久久| 久久亚洲私人国产精品vA | 91久久精品无码一区二区毛片| 久久中文字幕视频、最近更新| 精品久久久久久久无码 | 久久精品国内一区二区三区| 亚洲色大成网站www久久九| 精品久久久无码中文字幕天天| 精品久久久久中文字幕日本| 久久天天躁狠狠躁夜夜2020一| 女同久久| 天天做夜夜做久久做狠狠| 久久er国产精品免费观看8| 国产午夜精品理论片久久影视| 一本一本久久A久久综合精品| 欧美激情精品久久久久久久九九九| 久久亚洲精品视频| 中文精品久久久久国产网址| AV无码久久久久不卡蜜桃| 狠狠色婷婷久久一区二区三区| 亚洲AV无码1区2区久久| 伊人久久大香线蕉综合Av| 中文字幕无码免费久久| 国产成人久久精品一区二区三区| 久久精品国产男包| 久久久久亚洲av无码专区| 久久精品国产网红主播| 国产精品久久久久久影院|