<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    osg的渲染樹

    osg存在兩棵樹,場景樹和渲染樹。場景樹是一顆Node組成的樹,這些Node可能是矩陣變換,或者是狀態切換,或者是真正的可繪制對象,它既反映了場景的空間結構,也反映了對象的狀態。而渲染樹則是一顆以StateSet和RenderLeaf為節點的樹,它可以做到StateSet相同的RenderLeaf同時渲染從而不用切換Opengl狀態,并且做到盡量少的在多個不同State間切換。渲染樹在CullVisitor的cull過程中逐漸創建。

    SceneView包含兩個與渲染相關的兩個成員,一個RenderStage對象與StateGraph對象

    StateGraph顧名思義,就是以狀態為節點的圖。StateGraph包含了真正的可渲染對象RenderLeaf,但是一個StateGraph是不夠的,因為不同的RenderLeaf可能會有不同的StateSet,于是StateGraph內部包含一個以StateSet為key,StateGraph為value的Map對象,從而形成一顆渲染樹

    渲染時以該渲染樹為基準按一定順序逐漸渲染各個RenderLeaf。以何種方式遍歷該樹呢,這正是RenderStage的任務。

    RenderStage從RenderBin派生

    RenderBin包含了一個StateGraphList,該List將渲染樹中的各個StateGraph摘取出來,形成列表。形成列表的過程就是遍歷渲染樹的過程。RenderStage可以在RenderBin渲染之前之后做一些預處理和后處理,以完成一些特殊效果。

    RenderStage包含兩種類型的RenderBin,透明與不透明的。對于Transparent RenderBin比較難處理,就是必須按深度順序調用gl函數渲染對象,否則可能半透明會有問題。對于Opaque RenderBin則沒有此限制,它只需按照盡量少切換狀態的原則排列StateGraph即可。

    StateSet的SetRenderingHint函數可以用來控制使用那個RenderBin進行渲染,題外話,StateSet的setAttributeAndModes函數可以指定AlphaFunc與BlendFunc,前者功能相當于Alpha測試,后者則反映了Alpha混合的方式。使用方式類似下面:

    BlendFunc* func = new BlendFunc();

    func->setFunction(...);

    dstate->setAttributeAndModes(func, StateAttribute::ON);

     

    可以參考的相關osg代碼:

    void CullVisitor::apply(Geode& node)

    void CullVisitor::addDrawableAndDepth(osg::Drawable* drawable,osg::RefMatrix* matrix,float depth)

    StateGraph的部分函數。。。

    void RenderLeaf::render(State& state,RenderLeaf* previous)

    void RenderBin::drawImplementation(osg::State& state,RenderLeaf*& previous)

    void RenderStage::drawImplementation(osg::State& state,RenderLeaf*& previous)

    posted on 2007-08-06 22:05 雁過無痕 閱讀(5270) 評論(2)  編輯  收藏

    評論

    # re: osg的渲染樹 2007-08-30 11:27 dreamstone

    寫的很好啊  回復  更多評論   

    # re: osg的渲染樹 2008-06-04 17:13 SodaWater

    學習了~~
    博主好文  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2008年6月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    導航

    統計

    常用鏈接

    留言簿(7)

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 456亚洲人成在线播放网站| 欧洲 亚洲 国产图片综合| 四虎在线成人免费网站| 亚洲六月丁香婷婷综合| 亚洲Av无码乱码在线播放| 国产三级在线免费| 7777久久亚洲中文字幕| 亚洲日韩在线第一页| 2020因为爱你带字幕免费观看全集| 亚洲人成小说网站色| 亚洲中文字幕无码爆乳AV| 在线观看www日本免费网站| 国产综合激情在线亚洲第一页| 亚洲理论电影在线观看| 性感美女视频在线观看免费精品| 一级毛片免费在线| 亚洲一卡2卡4卡5卡6卡在线99| 亚洲精品视频在线观看你懂的| 久久成人国产精品免费软件| 猫咪www免费人成网站| 亚洲无限乱码一二三四区| 亚洲av成人一区二区三区在线观看 | 国产亚洲日韩一区二区三区| av大片在线无码免费| 国产精品成人啪精品视频免费| 亚洲国产精品综合福利专区| 亚洲精品国产va在线观看蜜芽| 久久精品国产免费观看| 国产色爽免费无码视频| 九九精品国产亚洲AV日韩| 18gay台湾男同亚洲男同| 中文字幕在亚洲第一在线| 午夜老司机免费视频| 精品无码AV无码免费专区| 久久99久久成人免费播放| 精品韩国亚洲av无码不卡区| 亚洲国产成人精品无码区在线网站| 亚洲男人的天堂www| 婷婷综合缴情亚洲狠狠尤物| 久久精品女人天堂AV免费观看| 最近中文字幕无免费|