Changeset 341


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).

Location:
trunk/avango-osg
Files:
4 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/avango-osg/include/avango/osg/SConscript

    r316 r341  
    7474    Text.h 
    7575    Texture.h 
     76    Texture1D.h 
    7677    Texture2D.h 
    7778    Texture2DArray.h 
  • trunk/avango-osg/include/avango/osg/TexturedQuad.h

    r338 r341  
    3434#include <avango/osg/Geometry.h> 
    3535#include <osg/Texture2D> 
     36#include <avango/osg/Texture1D.h> 
    3637#include <avango/osg/Texture2D.h> 
    3738#include <osgDB/ReadFile> 
     
    7273      SFVec4 Color; 
    7374      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. 
     75      SFTexture1D Texture1D; 
     76      SFTexture2D Texture2D; 
     77      //Due to backwards compatibility, this flag indicates if the field Filename can be used to load a texture directly. 
    7678      //If this is set to False, the Texture field must be used directly. Default is True 
    7779      SFBool UseFilename; 
     
    99101      bool mColorChanged; 
    100102      bool mFilenameChanged; 
    101       bool mTextureChanged; 
     103      bool mTextureChanged1D; 
     104      bool mTextureChanged2D; 
    102105      bool mTexCoordsChanged; 
    103106 
  • trunk/avango-osg/python/SConscript

    r316 r341  
    9292    avango/osg/OSGLoadImageStream.cpp 
    9393    avango/osg/OSGTexture.cpp 
     94    avango/osg/OSGTexture1D.cpp 
    9495    avango/osg/OSGTexture2D.cpp 
    9596    avango/osg/OSGTexture2DArray.cpp 
  • trunk/avango-osg/python/avango/osg/OSGImage.cpp

    r334 r341  
    2828#include <avango/osg/Image.h> 
    2929#include <osgDB/WriteFile> 
     30#include <osgDB/ReadFile> 
    3031#include "OSGImage.h" 
    3132 
     
    4950} 
    5051 
     52av::Link< av::osg::Image> read_image_file(const std::string& name) 
     53{ 
     54  return av::Link< av::osg::Image>(new av::osg::Image( ::osgDB::readImageFile(name) ) ); 
     55} 
     56 
    5157void init_OSGImage(void) 
    5258{ 
     
    5763    .def("write_file", write_image_file) 
    5864    ; 
     65  def("read_image_file", read_image_file); 
    5966} 
  • trunk/avango-osg/src/avango/osg/Init.cpp

    r317 r341  
    7272#include <avango/osg/Text.h> 
    7373#include <avango/osg/Texture.h> 
     74#include <avango/osg/Texture1D.h> 
    7475#include <avango/osg/Texture2D.h> 
    7576#include <avango/osg/Texture2DArray.h> 
     
    136137    av::osg::Text::initClass(); 
    137138    av::osg::Texture::initClass(); 
     139    av::osg::Texture1D::initClass(); 
    138140    av::osg::Texture2D::initClass(); 
    139141    av::osg::Texture2DArray::initClass(); 
  • trunk/avango-osg/src/avango/osg/SConscript

    r316 r341  
    7979    Text.cpp 
    8080    Texture.cpp 
     81    Texture1D.cpp 
    8182    Texture2D.cpp 
    8283    Texture2DArray.cpp 
  • 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.