osg技巧

1、讓模型始終顯示在前面

當A模型覆蓋住B模型,要讓B模型始終顯示,可進行如下操作:
方法一、

B->getOrCreateStateSet()->setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF | osg::StateAttribute::OVERRIDE); // 關閉深度測試,並設置覆蓋標誌
B->getOrCreateStateSet()->setRenderBinDetails(100.0, “RenderBin”); // 設置渲染係數,哪個模型要顯示在前面,就調大該模型的渲染係數

方法二:

// 開啓深度測試,並設置覆蓋標誌,深度測試總是通過
osg::Depth* dep = new osg::Depth;
dep->setFunction(osg::Depth::Function::ALWAYS);
B->getOrCreateStateSet()->setAttribute(dep, osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE);
B->getOrCreateStateSet()->setMode(GL_DEPTH_TEST, osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE);
// 設置渲染係數,哪個模型要顯示在前面,就調大該模型的渲染係數
B->getOrCreateStateSet()->setRenderBinDetails(100.0, “RenderBin”);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章