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

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲一区二区高清| 一区二区三区福利视频免费观看| 4444亚洲国产成人精品| 亚洲AV无码成人精品区大在线| 亚洲视频在线观看免费视频| 久久精品无码专区免费| 亚洲人成网站免费播放| 中文字幕亚洲综合久久2| 亚洲乱码精品久久久久..| 又粗又黄又猛又爽大片免费| 成人免费午夜视频| 日日麻批免费40分钟日本的| 午夜精品射精入后重之免费观看| 成人自慰女黄网站免费大全| 欧洲精品码一区二区三区免费看| 亚洲精品欧美综合四区| 77777午夜亚洲| 亚洲大片免费观看| 亚洲综合激情九月婷婷 | 亚洲女人初试黑人巨高清| 久久久综合亚洲色一区二区三区| 一本色道久久综合亚洲精品| 亚洲国产精品嫩草影院久久| 国产在线19禁免费观看| 免费特级黄毛片在线成人观看| 欧美最猛性xxxxx免费| 久草在视频免费福利| 国产1000部成人免费视频| 37pao成人国产永久免费视频 | 四虎在线免费播放| 日韩亚洲国产高清免费视频| 最近高清中文字幕无吗免费看| 亚洲视频免费播放| 日本三级2019在线观看免费| 一个人免费观看在线视频www| 无码人妻一区二区三区免费| 成年性生交大片免费看| 免费看大黄高清网站视频在线| 免费网站看v片在线香蕉| 国产一精品一aⅴ一免费| 免费国产成人午夜电影|