Ignore:
Timestamp:
02/01/10 17:37:44 (2 years ago)
Author:
ddangelo
Message:

osg 1D texture wrapped. Added function to create an av::osg::Image node by loading an image file. TexturedQuad? now supports 1D and 2D texturing. Old functionality should not be affected. The textured quad node should definitively be refactored into multiple nodes (or a script.container node).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/avango-osg/src/avango/osg/TexturedQuad.cpp

    r338 r341  
    4343  mColorChanged(true), 
    4444  mFilenameChanged(false), 
    45   mTextureChanged(false), 
     45  mTextureChanged1D(false), 
     46  mTextureChanged2D(false), 
    4647  mTexCoordsChanged(false), 
    4748  mVertexArray(new ::osg::Vec3Array(4)), 
     
    5051  mTexCoords(new ::osg::Vec2Array(4)) 
    5152{ 
    52   av::osg::Texture2D *texture = new av::osg::Texture2D(); 
     53  av::osg::Texture1D *texture1D = new av::osg::Texture1D(); 
     54  av::osg::Texture2D *texture2D = new av::osg::Texture2D(); 
    5355 
    5456  AV_FC_ADD_FIELD(Width, 1.0f); 
     
    5860  AV_FC_ADD_FIELD(UseFilename, true); 
    5961  AV_FC_ADD_FIELD(Filename, ""); 
    60   AV_FC_ADD_FIELD(Texture, texture); 
     62  AV_FC_ADD_FIELD(Texture1D, texture1D); 
     63  AV_FC_ADD_FIELD(Texture2D, texture2D); 
    6164  AV_FC_ADD_FIELD(TexCoord01, ::osg::Vec2(0.0f,1.0f)); 
    6265  AV_FC_ADD_FIELD(TexCoord00, ::osg::Vec2(0.0f,0.0f)); 
     
    6568 
    6669  SFVec3 TexCoord01; 
    67         SFVec3 TexCoord00; 
    68         SFVec3 TexCoord10; 
    69         SFVec3 TexCoord11; 
     70  SFVec3 TexCoord00; 
     71  SFVec3 TexCoord10; 
     72  SFVec3 TexCoord11; 
    7073 
    7174  AV_FC_ADD_ADAPTOR_FIELD(MinFilter, 
     
    9497  (*mTexCoords)[3].set(1.0f,1.0f); 
    9598  getOsgGeometry()->setTexCoordArray(0,mTexCoords.get()); 
    96   getOsgGeometry()->getOrCreateStateSet()->setTextureAttributeAndModes(0,Texture.getValue()->getOsgTexture2D(),::osg::StateAttribute::ON); 
    9799 
    98100  // set up texture 
    99   Texture.getValue()->getOsgTexture2D()->setWrap(::osg::Texture::WRAP_S, ::osg::Texture::CLAMP_TO_EDGE); 
    100   Texture.getValue()->getOsgTexture2D()->setWrap(::osg::Texture::WRAP_T, ::osg::Texture::CLAMP_TO_EDGE); 
     101  Texture2D.getValue()->getOsgTexture2D()->setWrap(::osg::Texture::WRAP_S, ::osg::Texture::CLAMP_TO_EDGE); 
     102  Texture2D.getValue()->getOsgTexture2D()->setWrap(::osg::Texture::WRAP_T, ::osg::Texture::CLAMP_TO_EDGE); 
    101103} 
    102104 
     
    143145  } 
    144146 
    145   if (&field == &Texture) 
    146   { 
    147     mTextureChanged = true; 
     147  if (&field == &Texture1D) 
     148  { 
     149    mTextureChanged1D = true; 
     150  } 
     151 
     152  if (&field == &Texture2D) 
     153  { 
     154    mTextureChanged2D = true; 
    148155  } 
    149156 
     
    171178  } 
    172179 
    173   if (mFilenameChanged) 
     180  if (mFilenameChanged && UseFilename.getValue()) 
    174181  { 
    175182    updateTexture(); 
     
    177184  } 
    178185 
    179   if (mTextureChanged) 
    180   { 
    181     if(!UseFilename.getValue()) 
    182     { 
    183       getOsgGeometry()->getOrCreateStateSet()->setTextureAttributeAndModes(0,Texture.getValue()->getOsgTexture2D(),::osg::StateAttribute::ON); 
    184     } 
    185     mTextureChanged = false; 
     186  if (mTextureChanged1D && !UseFilename.getValue()) 
     187  { 
     188    getOsgGeometry()->getOrCreateStateSet()->setTextureAttributeAndModes(0,Texture1D.getValue()->getOsgTexture1D(),::osg::StateAttribute::ON); 
     189    mTextureChanged1D = false; 
     190  } 
     191 
     192  if (mTextureChanged2D && !UseFilename.getValue()) 
     193  { 
     194    getOsgGeometry()->getOrCreateStateSet()->setTextureAttributeAndModes(0,Texture2D.getValue()->getOsgTexture2D(),::osg::StateAttribute::ON); 
     195    mTextureChanged2D = false; 
    186196  } 
    187197 
     
    199209::osg::ref_ptr< ::osg::Texture2D> 
    200210av::osg::TexturedQuad::getOsgTexture() const { 
    201   ::osg::ref_ptr< ::osg::Texture2D> tex = Texture.getValue()->getOsgTexture2D(); 
     211  ::osg::ref_ptr< ::osg::Texture2D> tex = Texture2D.getValue()->getOsgTexture2D(); 
    202212  return tex; 
    203213} 
     
    225235  if(Filename.getValue().size() != 0 && UseFilename.getValue()) 
    226236  { 
    227     Texture.getValue()->getOsgTexture2D()->setImage(::osgDB::readImageFile(Filename.getValue())); 
     237    Texture2D.getValue()->getOsgTexture2D()->setImage(::osgDB::readImageFile(Filename.getValue())); 
     238    getOsgGeometry()->getOrCreateStateSet()->setTextureAttributeAndModes(0,Texture2D.getValue()->getOsgTexture2D(),::osg::StateAttribute::ON); 
    228239  } 
    229240} 
     
    240251av::osg::TexturedQuad::getMinFilterCB(const av::SFInt::GetValueEvent& event) 
    241252{ 
    242   *(event.getValuePtr()) = Texture.getValue()->getOsgTexture2D()->getFilter(::osg::Texture2D::MIN_FILTER); 
     253  *(event.getValuePtr()) = Texture2D.getValue()->getOsgTexture2D()->getFilter(::osg::Texture2D::MIN_FILTER); 
    243254} 
    244255 
     
    246257av::osg::TexturedQuad::setMinFilterCB(const av::SFInt::SetValueEvent& event) 
    247258{ 
    248         Texture.getValue()->getOsgTexture2D()->setFilter(::osg::Texture2D::MIN_FILTER,(::osg::Texture::FilterMode)(event.getValue())); 
     259        Texture2D.getValue()->getOsgTexture2D()->setFilter(::osg::Texture2D::MIN_FILTER,(::osg::Texture2D::FilterMode)(event.getValue())); 
    249260} 
    250261 
     
    252263av::osg::TexturedQuad::getMagFilterCB(const av::SFInt::GetValueEvent& event) 
    253264{ 
    254   *(event.getValuePtr()) = Texture.getValue()->getOsgTexture2D()->getFilter(::osg::Texture2D::MAG_FILTER); 
     265  *(event.getValuePtr()) = Texture2D.getValue()->getOsgTexture2D()->getFilter(::osg::Texture2D::MAG_FILTER); 
    255266} 
    256267 
     
    258269av::osg::TexturedQuad::setMagFilterCB(const av::SFInt::SetValueEvent& event) 
    259270{ 
    260   Texture.getValue()->getOsgTexture2D()->setFilter(::osg::Texture2D::MAG_FILTER,(::osg::Texture::FilterMode)(event.getValue())); 
     271  Texture2D.getValue()->getOsgTexture2D()->setFilter(::osg::Texture2D::MAG_FILTER,(::osg::Texture2D::FilterMode)(event.getValue())); 
    261272} 
    262273 
     
    264275av::osg::TexturedQuad::getMaxAnisotropyCB(const av::SFFloat::GetValueEvent& event) 
    265276{ 
    266   *(event.getValuePtr()) = Texture.getValue()->getOsgTexture2D()->getMaxAnisotropy(); 
     277  *(event.getValuePtr()) = Texture2D.getValue()->getOsgTexture2D()->getMaxAnisotropy(); 
    267278} 
    268279 
     
    270281av::osg::TexturedQuad::setMaxAnisotropyCB(const av::SFFloat::SetValueEvent& event) 
    271282{ 
    272   Texture.getValue()->getOsgTexture2D()->setMaxAnisotropy(event.getValue()); 
    273 } 
     283  Texture2D.getValue()->getOsgTexture2D()->setMaxAnisotropy(event.getValue()); 
     284} 
Note: See TracChangeset for help on using the changeset viewer.