diff --git a/include/osgText/Font b/include/osgText/Font index e3638afa0..a32fffe1e 100644 --- a/include/osgText/Font +++ b/include/osgText/Font @@ -22,6 +22,7 @@ #include #include #include +#include #include @@ -87,6 +88,9 @@ public: virtual std::string getFileName() const; + void setTexEnv(osg::TexEnv* texenv) { if (texenv) _texenv = texenv; } + inline osg::TexEnv* getTexEnv() { return _texenv.get(); } + inline const osg::TexEnv* getTexEnv() const { return _texenv.get(); } void setStateSet(osg::StateSet* stateset) { _stateset = stateset; } osg::StateSet* getStateSet() { return _stateset.get(); } @@ -157,6 +161,7 @@ protected: typedef std::map< SizePair, GlyphMap > SizeGlyphMap; + osg::ref_ptr _texenv; osg::ref_ptr _stateset; SizeGlyphMap _sizeGlyphMap; GlyphTextureList _glyphTextureList; diff --git a/src/osgText/Font.cpp b/src/osgText/Font.cpp index ca17e4cf1..fcabca2ca 100644 --- a/src/osgText/Font.cpp +++ b/src/osgText/Font.cpp @@ -142,9 +142,8 @@ Font::Font(FontImplementation* implementation): { setImplementation(implementation); + _texenv = new osg::TexEnv; _stateset = new osg::StateSet; - //_stateset->setMode(GL_BLEND,osg::StateAttribute::ON); - //_stateset->setTextureMode(0,GL_TEXTURE_2D,osg::StateAttribute::ON); _stateset->setRenderingHint(osg::StateSet::TRANSPARENT_BIN); } diff --git a/src/osgText/Text.cpp b/src/osgText/Text.cpp index 365ae822e..4fbd827e0 100644 --- a/src/osgText/Text.cpp +++ b/src/osgText/Text.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include @@ -1452,6 +1453,7 @@ void Text::drawImplementation(osg::State& state) const state.applyMode(GL_BLEND,true); state.applyTextureMode(0,GL_TEXTURE_2D,true); + state.applyTextureAttribute(0,getActiveFont()->getTexEnv()); if (_characterSizeMode!=OBJECT_COORDS || _autoRotateToScreen) {