在爲球貼圖的基礎上,實現模擬地球的透明展示。
是先前效果如下:
實現後效果如下:
實現代碼如下,主要是在狀態集中進行設置:
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混合:把兩種顏色混合在一起。