osg::StateSet* ss=node->getOrCreateStateSet(); 1、光照 ss->setMode(GL_LIGHTING, osg::StateAttribute::OFF); 2、填充模式 ss->setAttributeAndModes(new osg::PolygonMode::FRONT_AND_BACK, osg::PolygonMode::LINE), osg::StateAttribute::ON); ss->setAttributeAndModes(new osg::PolygonMode::FRONT...
stateSet->setRenderBinDetails( 0, “” ); // 渲染顺序-1(先渲染),此时渲染树中将新建一个“渲染元”节点 stateSet->setRenderBinDetails( -1, “RenderBin” ); // 渲染顺序10,此时将新建一个“渲染元”,并按深度值降序排序各元素 stateSet->setRenderBinDetails( 10, “DepthSortedBin” ); StateSet:...
pCamera->setRenderOrder(osg::Camera::NESTED_RENDER); // 显示为背景HUD // pCamera->setRenderOrder(osg::Camera::POST_RENDER); // 显示为前景HUD // 步骤八:关闭光照,通过osg::StateSet设置 pGeode = new osg::Geode(); osg::ref_ptr<osg::StateSet> pStateSet = pGeode->getOrCreateStateSet...
它的取值是场景主摄像机的 StateSet,换句话说,任何对状态树的遍历都将首先及至 场景主摄像机的渲染状态,然后才是各个节点的渲染状态,这就是_globalStateSet 的功用所 在了。 而整个状态树的构建过程则可以参考上面的场景树结构图,其规则为: 1、状态树是根据渲染状态(StateSet)来生成的,那些没有设置 StateSet ...
一、 渲染状态(render state) osg中,当设置某节点的渲染状态时,该状态会赋予当前节点及其子节点,因此,若要实现多节点多状态渲染时,一定注意节点之间的父子关系,最好一个节点设置一个自己想要的状态,除非父节点及其子节点的渲染状态一样。 渲染状态的管理通过osg::StateSet管理,可以将其添加到任意的节点(node、group...
geometry->setVertexArray(vertex); geometry->dirtyDisplayList(); //std::cout<<x<<" "<<y<<" "<<end_x<<" "<<end_y<<std::endl; } if (ea.getModKeyMask()&osgGA::GUIEventAdapter::MODKEY_LEFT_SHIFT) { doit = true; } }
确保模型仅使用适当的光源:通过调整模型的状态集(StateSet),确保模型仅使用root节点的默认光源或其他指定光源。 2. 修正材质与法线 检查并修正材质设置:确保模型的材质设置正确,包括光照属性、纹理映射等。 调整法线:如果模型在缩放或变换过程中法线未正确调整,可以使用GL_RESCALE_NORMAL等OpenGL属性来自动调整法线。 3...
get(), osg::StateAttribute::ON); geode->setStateSet(stateset.get()); return geode; } int main() { osgViewer::Viewer viewer; osg::ref_ptr<osg::Group> group = new osg::Group; std::string heightFile = "D:\\Data\\dst.tif"; std::string texFile = "D:\\Data\\dom3_Level_19....
stateSet->setRenderingHint ( TRANSPARENT_BIN ); 分别等价于: stateSet->setRenderBinDetails( 0, “RenderBin” ); stateSet->setRenderBinDetails( 10, “DepthSortedBin” ); #include <windows.h> #include <osg\node> #include <osg\group>
(baseTexture, coord)\n;" " gl_FragColor = C;\n" "}\n" }; osg::StateSet * ss = node->getOrCreateStateSet(); osg::ref_ptr<osg::Program> program = new osg::Program(); program->addShader(new osg::Shader(osg::Shader::FRAGMENT, fragShader)); program->addShader(new osg::...