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