|
大家好,我现在有两张照片叠加显示,上边一张要设置成半透明,可以透过看到下边的照片。两张照片我都新建了一个图元四边形,但是这样的话上边的几何体就会把下边的图遮住。我尝试做如下设置(部分代码):
osg::StateSet* dstate = new osg::StateSet;
dstate->setMode(GL_CULL_FACE,osg::StateAttribute::OFF);
dstate->setMode(GL_LIGHTING,osg::StateAttribute::OFF);
dstate->setTextureAttributeAndModes(0, texture,osg::StateAttribute::ON);
dstate->setTextureAttribute(0, texmat);
dstate->setRenderingHint(osg::StateSet::TRANSPARENT_BIN);
osg::Geode* geode = new osg::Geode;
geode->getOrCreateStateSet()->setMode(GL_BLEND,osg::StateAttribute::ON);
geode->getOrCreateStateSet()->setMode(GL_DEPTH_TEST,osg::StateAttribute::ON);
纹理透明度设置:
osg::Vec4Array* colors = new osg::Vec4Array();
colors->push_back(osg::Vec4(0.5f, 0.5f, 0.5f, alpha));
这种情况下,当我把alpha设置成0时,上边的影像是完全不可见的,而且它的几何面也透明了,显示的效果就是没有遮挡下边的影像。但是如果我把alpha设置成其他值,比如0.4,就只是对纹理做了透明,上边的几何体还是会遮挡下边的影像。效果如下:
请高手帮我解答一下,如何设置能够保证上边的几何面不会遮挡下边的影像,谢谢。
|
-
正常重叠覆盖
-
上边一张影像的纹理alpha设置为0
-
上边一张的纹理alpha设置成0.4
|