<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 雁過無痕 閱讀(5240) 評論(2)  編輯  收藏

    評論

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

    寫的很好啊  回復  更多評論   

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

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


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


    網站導航:
     
    <2007年8月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    導航

    統計

    常用鏈接

    留言簿(7)

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 成人毛片免费在线观看| 一级中文字幕乱码免费| 亚洲国产成人久久| 亚洲最新在线视频| 91亚洲自偷在线观看国产馆| 亚洲精品中文字幕乱码影院| 亚洲毛片基地日韩毛片基地| 亚洲黄网在线观看| 久久亚洲精品专区蓝色区| 亚洲一区二区三区免费视频| 亚洲国产日韩精品| 亚洲欧美日韩综合久久久| 亚洲jizzjizz少妇| 看成年女人免费午夜视频| 一级白嫩美女毛片免费| 中国videos性高清免费| 日本免费人成网ww555在线| 伊人久久免费视频| 久草在视频免费福利| 免费毛片在线看片免费丝瓜视频 | 久久精品熟女亚洲av麻豆| 日韩成人毛片高清视频免费看| 一级人做人爰a全过程免费视频| 中文字幕在线免费看线人| 日韩电影免费在线观看| 91网站免费观看| 日本成年免费网站| 国产成人精品高清免费| 国产日产亚洲系列最新| 亚洲电影国产一区| 亚洲人xxx日本人18| 边摸边吃奶边做爽免费视频99 | 两性色午夜免费视频| 午夜视频在线免费观看| 野花高清在线观看免费3中文| 国产一级淫片a视频免费观看| 亚洲熟妇无码乱子AV电影| 亚洲欧洲国产综合| 老妇激情毛片免费| 三年片在线观看免费大全电影| 99视频在线精品免费观看6|