• <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>

            永遠也不完美的程序

            不斷學習,不斷實踐,不斷的重構……

            常用鏈接

            統計

            積分與排名

            好友鏈接

            最新評論

            AIR引擎開發總結(一)

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

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

            評論

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

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

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

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

            久久成人精品视频| 欧美精品乱码99久久蜜桃| 九九99精品久久久久久| 99久久99久久精品免费看蜜桃| 久久综合综合久久狠狠狠97色88| 久久天天躁狠狠躁夜夜不卡| 中文字幕日本人妻久久久免费 | 麻豆成人久久精品二区三区免费| 国产午夜久久影院| 久久中文字幕人妻熟av女| 久久超碰97人人做人人爱| 久久有码中文字幕| 四虎国产精品免费久久久| 伊人久久大香线焦AV综合影院| 精品久久久久久综合日本| 久久亚洲AV无码精品色午夜| 日本久久久精品中文字幕| 人妻精品久久无码区| 综合久久精品色| 久久久艹| 色综合久久中文色婷婷| 99久久超碰中文字幕伊人| 亚洲人成网亚洲欧洲无码久久| 久久99精品久久久久久不卡| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 嫩草影院久久国产精品| 久久男人Av资源网站无码软件 | 久久久久久A亚洲欧洲AV冫| 精品久久久久久| 久久精品国产影库免费看| 久久精品亚洲中文字幕无码麻豆| 综合久久一区二区三区 | 亚洲欧美伊人久久综合一区二区| 久久久噜噜噜久久| 久久亚洲国产精品五月天婷| 伊人色综合久久天天| 国产精品美女久久久久网| 精品久久久久久无码专区不卡 | 欧美精品一区二区久久| 亚洲国产精品综合久久网络| 久久久久久久久久免免费精品|