Changeset 336


Ignore:
Timestamp:
01/14/10 00:05:49 (2 years ago)
Author:
ddangelo
Message:

Field for setting the 2D texture of the Quad added. To be backward compatible and to avoid confusion, a bool field which controls the functionality to load a texture directly from an image file added. Default is true, so no existing code should break. If set to false, the field Filename will be ignored and the Texture field must be used to set the texture of the Quad.

Location:
trunk/avango-osg
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/avango-osg/include/avango/osg/TexturedQuad.h

    r1 r336  
    3434#include <avango/osg/Geometry.h> 
    3535#include <osg/Texture2D> 
     36#include <avango/osg/Texture2D.h> 
    3637#include <osgDB/ReadFile> 
    3738#include <avango/osg/Fields.h> 
     
    7172      SFVec4 Color; 
    7273      SFVec3 Position; 
     74      SFTexture2D Texture; 
     75      //Due to backwards compatibility, thie flag indicates if the field Filename can be used to load a texture directly. 
     76      //If this is set to False, the Texture field must be used directly. Default is True 
     77      SFBool UseFilename; 
    7378      SFString Filename; 
    7479      SFInt MinFilter; 
     
    7984      /* virtual */ void evaluateLocalSideEffect(); 
    8085 
    81  
    82       /** 
     86          /** 
    8387       * Get the ::osg::Texture object. 
    8488       * \return an osg::ref pointer to the texture object 
     
    9599      ::osg::ref_ptr< ::osg::Vec4Array> mColors; 
    96100      ::osg::ref_ptr< ::osg::Vec2Array> mTexCoords; 
    97       ::osg::ref_ptr< ::osg::Texture2D> mOsgTexture; 
    98101 
    99102      void updateGeometry(); 
  • trunk/avango-osg/src/avango/osg/TexturedQuad.cpp

    r1 r336  
    4646  mNormals(new ::osg::Vec3Array(1)), 
    4747  mColors(new ::osg::Vec4Array(1)), 
    48   mTexCoords(new ::osg::Vec2Array(4)), 
    49   mOsgTexture(new ::osg::Texture2D) 
    50 { 
     48  mTexCoords(new ::osg::Vec2Array(4)) 
     49{ 
     50  av::osg::Texture2D *texture = new av::osg::Texture2D(); 
     51 
    5152  AV_FC_ADD_FIELD(Width, 1.0f); 
    5253  AV_FC_ADD_FIELD(Height, 1.0f); 
    5354  AV_FC_ADD_FIELD(Color, ::osg::Vec4(1,1,1,1)); 
    5455  AV_FC_ADD_FIELD(Position, ::osg::Vec3(0,0,0)); 
     56  AV_FC_ADD_FIELD(UseFilename, true); 
    5557  AV_FC_ADD_FIELD(Filename, ""); 
     58  AV_FC_ADD_FIELD(Texture, texture); 
     59 
    5660 
    5761  AV_FC_ADD_ADAPTOR_FIELD(MinFilter, 
     
    8084  (*mTexCoords)[3].set(1.0f,1.0f); 
    8185  getOsgGeometry()->setTexCoordArray(0,mTexCoords.get()); 
    82   getOsgGeometry()->getOrCreateStateSet()->setTextureAttributeAndModes(0,mOsgTexture.get(),::osg::StateAttribute::ON); 
     86  getOsgGeometry()->getOrCreateStateSet()->setTextureAttributeAndModes(0,Texture.getValue()->getOsgTexture2D(),::osg::StateAttribute::ON); 
    8387 
    8488  // set up texture 
    85   mOsgTexture->setWrap(::osg::Texture::WRAP_S, ::osg::Texture::CLAMP_TO_EDGE); 
    86   mOsgTexture->setWrap(::osg::Texture::WRAP_T, ::osg::Texture::CLAMP_TO_EDGE); 
     89  Texture.getValue()->getOsgTexture2D()->setWrap(::osg::Texture::WRAP_S, ::osg::Texture::CLAMP_TO_EDGE); 
     90  Texture.getValue()->getOsgTexture2D()->setWrap(::osg::Texture::WRAP_T, ::osg::Texture::CLAMP_TO_EDGE); 
    8791} 
    8892 
     
    156160::osg::ref_ptr< ::osg::Texture2D> 
    157161av::osg::TexturedQuad::getOsgTexture() const { 
    158   return mOsgTexture; 
     162  ::osg::ref_ptr< ::osg::Texture2D> tex = Texture.getValue()->getOsgTexture2D(); 
     163  return tex; 
    159164} 
    160165 
     
    179184av::osg::TexturedQuad::updateTexture() 
    180185{ 
    181   if(Filename.getValue().size() != 0) 
    182   { 
    183     mOsgTexture->setImage(::osgDB::readImageFile(Filename.getValue())); 
     186  if(Filename.getValue().size() != 0 && UseFilename.getValue()) 
     187  { 
     188    Texture.getValue()->getOsgTexture2D()->setImage(::osgDB::readImageFile(Filename.getValue())); 
    184189  } 
    185190} 
     
    196201av::osg::TexturedQuad::getMinFilterCB(const av::SFInt::GetValueEvent& event) 
    197202{ 
    198   *(event.getValuePtr()) = mOsgTexture->getFilter(::osg::Texture2D::MIN_FILTER); 
     203  *(event.getValuePtr()) = Texture.getValue()->getOsgTexture2D()->getFilter(::osg::Texture2D::MIN_FILTER); 
    199204} 
    200205 
     
    202207av::osg::TexturedQuad::setMinFilterCB(const av::SFInt::SetValueEvent& event) 
    203208{ 
    204   mOsgTexture->setFilter(::osg::Texture2D::MIN_FILTER,(::osg::Texture::FilterMode)(event.getValue())); 
     209        Texture.getValue()->getOsgTexture2D()->setFilter(::osg::Texture2D::MIN_FILTER,(::osg::Texture::FilterMode)(event.getValue())); 
    205210} 
    206211 
     
    208213av::osg::TexturedQuad::getMagFilterCB(const av::SFInt::GetValueEvent& event) 
    209214{ 
    210   *(event.getValuePtr()) = mOsgTexture->getFilter(::osg::Texture2D::MAG_FILTER); 
     215  *(event.getValuePtr()) = Texture.getValue()->getOsgTexture2D()->getFilter(::osg::Texture2D::MAG_FILTER); 
    211216} 
    212217 
     
    214219av::osg::TexturedQuad::setMagFilterCB(const av::SFInt::SetValueEvent& event) 
    215220{ 
    216   mOsgTexture->setFilter(::osg::Texture2D::MAG_FILTER,(::osg::Texture::FilterMode)(event.getValue())); 
     221  Texture.getValue()->getOsgTexture2D()->setFilter(::osg::Texture2D::MAG_FILTER,(::osg::Texture::FilterMode)(event.getValue())); 
    217222} 
    218223 
     
    220225av::osg::TexturedQuad::getMaxAnisotropyCB(const av::SFFloat::GetValueEvent& event) 
    221226{ 
    222   *(event.getValuePtr()) = mOsgTexture->getMaxAnisotropy(); 
     227  *(event.getValuePtr()) = Texture.getValue()->getOsgTexture2D()->getMaxAnisotropy(); 
    223228} 
    224229 
     
    226231av::osg::TexturedQuad::setMaxAnisotropyCB(const av::SFFloat::SetValueEvent& event) 
    227232{ 
    228   mOsgTexture->setMaxAnisotropy(event.getValue()); 
    229 } 
     233  Texture.getValue()->getOsgTexture2D()->setMaxAnisotropy(event.getValue()); 
     234} 
Note: See TracChangeset for help on using the changeset viewer.