osgfxbrowser例子 osgFX特效演示

2021-06-19 05:11:31 字數 1320 閱讀 3896

該文內容主要來自王銳《最長的一幀》

osg::displaysettings::instance()->setminimumnumstencilbits(1);在建立圖形上下文之前設定displaysettings,對應traits中的stencil,模板緩衝,預設是0。

unsigned int clearmask = viewer.getcamera()->getclearmask();

viewer.getcamera()->setclearmask(clearmask | gl_stencil_buffer_bit);

viewer.getcamera()->setclearstencil(0);

使相機具有模板緩衝的功能,相機預設只有gl_color_buffer_bit | gl_depth_buffer_bit顏色和深度快取,這裡設定了模板緩衝為1bit。

rotatecallback根據**時間驅動模型的旋轉。

osg::ref_ptrlight = new osg::light;

light->setlightnum(0);

light->setdiffuse(osg::vec4(1, 1, 1, 1));

light->setspecular(osg::vec4(1, 1, 0.8f, 1));

light->setambient(osg::vec4(0.2f, 0.2f, 0.2f, 0.2f));

light-> setposition(osg::vec4(1, -1, 1, 0));

osg::ref_ptrroot = new osg::lightsource;

root->setlight(light.get());

root->setlocalstatesetmodes();

接下來設定了光照,osg::lightsource繼承group,可以新增光源light,光照的詳細分析我們放在後面光照的例子中,這裡我們繼續往下進行。

例子中把所有的特效都放入了effect_list中,通過seteffectindex設定當前特效索引,然後rebuilt場景。

接下來就是osgfx::effect的內容了,effect是特效的基類,effect繼承group,下面有以上我們所說的幾種特效。具體的應用很簡單:

effect->addchild(_scene.get());

_root->addchild(effect.get());

把所應用特效的場景加入到effect節點中,然後把effect節點加入到根節點中,實現對應的特效

,可以通過繼承effect實現自己的特效。

在例子中,通過keyboardhandler實現鍵盤控制不同的特效顯示

社交O2O的進化

人們對以興趣為目的的社交有著強烈的需求,而移動終端的lbs功能使得o2o式興趣社交愈加便捷。未來o2o式的興趣社交應會成為乙個新的發展方向。以基於lbs功能的興趣社交為代表的社交2.0時代之所以來臨,一方面是使用者對o2o興趣社交的強烈需求 興趣很難改變,並且人們對分享興趣有很強的意願,同時興趣社交...

社交O2O的進化

人們對以興趣為目的的社交有著強烈的需求。而移動終端的lbs功能使得o2o式興趣社交愈加便捷。未來o2o式的興趣社交應會成為乙個新的發展方向。以基於lbs功能的興趣社交為代表的社交2.0時代之所以來臨,一方面是使用者對o2o興趣社交的強烈需求 興趣非常難改變。而且人們對分享興趣有非常強的意願,同一時候...

社交O2O的進化

人們對以興趣為目的的社交有著強烈的需求。而移動終端的lbs功能使得o2o式興趣社交愈加便捷。未來o2o式的興趣社交應會成為乙個新的發展方向。以基於lbs功能的興趣社交為代表的社交2.0時代之所以來臨,一方面是使用者對o2o興趣社交的強烈需求 興趣非常難改變。而且人們對分享興趣有非常強的意願,同一時候...