设置GraphContext
mViewer->getCamera()->getGraphicsContext()->getState()->resetVertexAttributeAlias(false);
_mViewer->getCamera()->getGraphicsContext()->getState()->setUseModelViewAndProjectionUniforms(true);
_mViewer->getCamera()->getGraphicsContext()->getState()->setUseVertexAttributeAliasing(true);
设置完成后就可以在节点上正常处理了
auto ss = root->getOrCreateStateSet();
osg::ref_ptr<osg::Program> program = new osg::Program();
program->addShader(new osg::Shader(osg::Shader::FRAGMENT, fragShader));
program->addShader(new osg::Shader(osg::Shader::VERTEX, vertexShader));
ss->setAttributeAndModes(program, osg::StateAttribute::ON);
ss->setMode( GL_DEPTH_TEST, osg::StateAttribute::ON );
注意:osg默认是不开启深度测试的,需要手动开启深度测试