Improved handling of setting of the depth of the UI.
git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14418 16af8721-9629-0410-8352-f15c8da7e697
This commit is contained in:
@@ -52,6 +52,7 @@ public:
|
||||
virtual osg::Node* createText(const osg::BoundingBox& extents, const AlignmentSettings* as, const TextSettings* textSettings, const std::string& text);
|
||||
virtual osg::Node* createIcon(const osg::BoundingBox& extents, const std::string& filename, const osg::Vec4& colour);
|
||||
virtual void setupDialogStateSet(osg::StateSet* stateset, int binNum);
|
||||
virtual void setupPopupStateSet(osg::StateSet* stateset, int binNum);
|
||||
virtual void setupClipStateSet(const osg::BoundingBox& extents, osg::StateSet* stateset);
|
||||
|
||||
protected:
|
||||
|
||||
@@ -76,8 +76,11 @@ void Popup::createGraphicsImplementation()
|
||||
|
||||
bool requiresFrame = (getFrameSettings() && getFrameSettings()->getShape()!=osgUI::FrameSettings::NO_FRAME);
|
||||
if (requiresFrame) { _transform->addChild(style->createFrame(_extents, getFrameSettings(), dialogBackgroundColor)); }
|
||||
|
||||
style->setupDialogStateSet(getOrCreateStateSet(), 6);
|
||||
#if 1
|
||||
style->setupDialogStateSet(getOrCreateStateSet(),6);
|
||||
#else
|
||||
style->setupPopupStateSet(getOrCreateStateSet(),6);
|
||||
#endif
|
||||
style->setupClipStateSet(_extents, getOrCreateStateSet());
|
||||
|
||||
|
||||
|
||||
@@ -387,6 +387,7 @@ osg::Node* Style::createPanel(const osg::BoundingBox& extents, const osg::Vec4&
|
||||
return geometry.release();
|
||||
}
|
||||
|
||||
|
||||
osg::Node* Style::createDepthSetPanel(const osg::BoundingBox& extents)
|
||||
{
|
||||
// OSG_NOTICE<<"createDepthSetPanel"<<std::endl;
|
||||
@@ -405,12 +406,15 @@ osg::Node* Style::createDepthSetPanel(const osg::BoundingBox& extents)
|
||||
geometry->addPrimitiveSet( new osg::DrawArrays(GL_TRIANGLE_STRIP, 0, 4) );
|
||||
|
||||
osg::ref_ptr<osg::StateSet> stateset = geometry->getOrCreateStateSet();
|
||||
stateset->setAttributeAndModes( _enabledDepthWrite.get(), osg::StateAttribute::ON);
|
||||
stateset->setAttributeAndModes( _disableColorWriteMask.get() );
|
||||
stateset->setAttributeAndModes( _enabledDepthWrite.get(), osg::StateAttribute::ON | osg::StateAttribute::PROTECTED );
|
||||
stateset->setAttributeAndModes( _disableColorWriteMask.get(), osg::StateAttribute::ON | osg::StateAttribute::PROTECTED );
|
||||
stateset->setRenderBinDetails(20, "TraversalOrderBin", osg::StateSet::OVERRIDE_PROTECTED_RENDERBIN_DETAILS);
|
||||
stateset->setNestRenderBins(false);
|
||||
|
||||
return geometry.release();
|
||||
}
|
||||
|
||||
|
||||
void Style::setupDialogStateSet(osg::StateSet* stateset, int binNum)
|
||||
{
|
||||
stateset->setRenderBinDetails(binNum, "TraversalOrderBin", osg::StateSet::OVERRIDE_PROTECTED_RENDERBIN_DETAILS);
|
||||
@@ -419,6 +423,10 @@ void Style::setupDialogStateSet(osg::StateSet* stateset, int binNum)
|
||||
stateset->setNestRenderBins(false);
|
||||
}
|
||||
|
||||
void Style::setupPopupStateSet(osg::StateSet* /*stateset*/, int /*binNum*/)
|
||||
{
|
||||
}
|
||||
|
||||
void Style::setupClipStateSet(const osg::BoundingBox& extents, osg::StateSet* stateset)
|
||||
{
|
||||
unsigned int clipTextureUnit = 1;
|
||||
|
||||
Reference in New Issue
Block a user