在为球贴图的基础上,实现模拟地球的透明展示。
是先前效果如下:
实现后效果如下:
实现代码如下,主要是在状态集中进行设置:
osg::ref_ptr<osg::BlendFunc>blendFunc = new osg::BlendFunc();
blendFunc->setSource(osg::BlendFunc::SRC_ALPHA);
blendFunc->setDestination(osg::BlendFunc::ONE_MINUS_CONSTANT_ALPHA);
stateSet->setAttributeAndModes(blendFunc);
stateSet->setMode(GL_DEPTH_TEST,osg::StateAttribute::OFF);//取消深度测试
取消深度测试很关键,可以防止图片转动切换时变花,如下图:
osg::BlendFunc混合:把两种颜色混合在一起。