20,741
edits
Line 224: | Line 224: | ||
osg::StateSet *state = getOrCreateStateSet(); | osg::StateSet *state = getOrCreateStateSet(); | ||
state->setTextureMode(0,GL_TEXTURE_2D,osg::StateAttribute::PROTECTED | osg::StateAttribute::OFF); | state->setTextureMode(0,GL_TEXTURE_2D,osg::StateAttribute::PROTECTED | osg::StateAttribute::OFF); | ||
</syntaxhighlight> | |||
We can use a helper object to wrap the enable/disable logic, i.e. using a struct (pseudo code): | |||
<syntaxhighlight lang="cpp"> | |||
struct CanvasElementOption { | |||
// abstract | |||
virtual void enable() = 0; | |||
virtual void disable() = 0; | |||
private: | |||
osg::StateSet _state = _element->getOrCreateStateSet(); | |||
}; | |||
struct CanvasElementTextureOption : public CanvasElementOption { | |||
CanvasElementOption(CanvasElement* element) : _element(element) {} | |||
void enable() { | |||
_state->setTextureMode(0,GL_TEXTURE_2D,osg::StateAttribute::PROTECTED | osg::StateAttribute::ON); | |||
} | |||
void disable() { | |||
_state->setTextureMode(0,GL_TEXTURE_2D,osg::StateAttribute::PROTECTED | osg::StateAttribute::OFF); | |||
} | |||
}; | |||
</syntaxhighlight> | </syntaxhighlight> | ||