From 49cc9b85d53278ddb3ae706bf281f3154e5b5aad Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 23 Sep 2003 14:42:56 +0000 Subject: [PATCH] From Tom Jolly, added support for TexEnv to pfb plugin. --- src/osgPlugins/pfb/ConvertFromPerformer.cpp | 40 +++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/osgPlugins/pfb/ConvertFromPerformer.cpp b/src/osgPlugins/pfb/ConvertFromPerformer.cpp index 7be5667cf..afbd4771b 100644 --- a/src/osgPlugins/pfb/ConvertFromPerformer.cpp +++ b/src/osgPlugins/pfb/ConvertFromPerformer.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -1121,6 +1122,45 @@ osg::StateSet* ConvertFromPerformer::visitGeoState(osg::Drawable* osgDrawable,pf pfTexture* tex = (pfTexture*)geostate->getAttr(PFSTATE_TEXTURE); visitTexture(osgStateSet,tex); + pfTexEnv* texenv = (pfTexEnv*)geostate->getAttr(PFSTATE_TEXENV); + + if(texenv) + { + osg::TexEnv* osgTexEnv = new osg::TexEnv(); + int mode = texenv->getMode(); + + float r,g,b,a; + texenv->getBlendColor(&r, &g, &b, &a); + + switch(mode) + { + case(PFTE_MODULATE) : + osgTexEnv->setMode(osg::TexEnv::MODULATE); + osgTexEnv->setColor(osg::Vec4(r,g,b,a)); + break; + case(PFTE_DECAL) : + osgTexEnv->setMode(osg::TexEnv::DECAL); + osgTexEnv->setColor(osg::Vec4(r,g,b,a)); + break; + case(PFTE_BLEND) : + osgTexEnv->setMode(osg::TexEnv::BLEND); + osgTexEnv->setColor(osg::Vec4(r,g,b,a)); + break; + case(PFTE_REPLACE) : + osgTexEnv->setMode(osg::TexEnv::REPLACE); + osgTexEnv->setColor(osg::Vec4(r,g,b,a)); + break; + case(PFTE_ADD) : + osgTexEnv->setMode(osg::TexEnv::ADD); + osgTexEnv->setColor(osg::Vec4(r,g,b,a)); + break; + default: + std::cerr << "TexEnv Mode "<setTextureAttribute(0,osgTexEnv); + } + pfTexGen* texgen = (pfTexGen*)geostate->getAttr(PFSTATE_TEXGEN); if (texgen)