Changeset 336
- Timestamp:
- 01/14/10 00:05:49 (2 years ago)
- Location:
- trunk/avango-osg
- Files:
-
- 2 edited
-
include/avango/osg/TexturedQuad.h (modified) (4 diffs)
-
src/avango/osg/TexturedQuad.cpp (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/avango-osg/include/avango/osg/TexturedQuad.h
r1 r336 34 34 #include <avango/osg/Geometry.h> 35 35 #include <osg/Texture2D> 36 #include <avango/osg/Texture2D.h> 36 37 #include <osgDB/ReadFile> 37 38 #include <avango/osg/Fields.h> … … 71 72 SFVec4 Color; 72 73 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; 73 78 SFString Filename; 74 79 SFInt MinFilter; … … 79 84 /* virtual */ void evaluateLocalSideEffect(); 80 85 81 82 /** 86 /** 83 87 * Get the ::osg::Texture object. 84 88 * \return an osg::ref pointer to the texture object … … 95 99 ::osg::ref_ptr< ::osg::Vec4Array> mColors; 96 100 ::osg::ref_ptr< ::osg::Vec2Array> mTexCoords; 97 ::osg::ref_ptr< ::osg::Texture2D> mOsgTexture;98 101 99 102 void updateGeometry(); -
trunk/avango-osg/src/avango/osg/TexturedQuad.cpp
r1 r336 46 46 mNormals(new ::osg::Vec3Array(1)), 47 47 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 51 52 AV_FC_ADD_FIELD(Width, 1.0f); 52 53 AV_FC_ADD_FIELD(Height, 1.0f); 53 54 AV_FC_ADD_FIELD(Color, ::osg::Vec4(1,1,1,1)); 54 55 AV_FC_ADD_FIELD(Position, ::osg::Vec3(0,0,0)); 56 AV_FC_ADD_FIELD(UseFilename, true); 55 57 AV_FC_ADD_FIELD(Filename, ""); 58 AV_FC_ADD_FIELD(Texture, texture); 59 56 60 57 61 AV_FC_ADD_ADAPTOR_FIELD(MinFilter, … … 80 84 (*mTexCoords)[3].set(1.0f,1.0f); 81 85 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); 83 87 84 88 // 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); 87 91 } 88 92 … … 156 160 ::osg::ref_ptr< ::osg::Texture2D> 157 161 av::osg::TexturedQuad::getOsgTexture() const { 158 return mOsgTexture; 162 ::osg::ref_ptr< ::osg::Texture2D> tex = Texture.getValue()->getOsgTexture2D(); 163 return tex; 159 164 } 160 165 … … 179 184 av::osg::TexturedQuad::updateTexture() 180 185 { 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())); 184 189 } 185 190 } … … 196 201 av::osg::TexturedQuad::getMinFilterCB(const av::SFInt::GetValueEvent& event) 197 202 { 198 *(event.getValuePtr()) = mOsgTexture->getFilter(::osg::Texture2D::MIN_FILTER);203 *(event.getValuePtr()) = Texture.getValue()->getOsgTexture2D()->getFilter(::osg::Texture2D::MIN_FILTER); 199 204 } 200 205 … … 202 207 av::osg::TexturedQuad::setMinFilterCB(const av::SFInt::SetValueEvent& event) 203 208 { 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())); 205 210 } 206 211 … … 208 213 av::osg::TexturedQuad::getMagFilterCB(const av::SFInt::GetValueEvent& event) 209 214 { 210 *(event.getValuePtr()) = mOsgTexture->getFilter(::osg::Texture2D::MAG_FILTER);215 *(event.getValuePtr()) = Texture.getValue()->getOsgTexture2D()->getFilter(::osg::Texture2D::MAG_FILTER); 211 216 } 212 217 … … 214 219 av::osg::TexturedQuad::setMagFilterCB(const av::SFInt::SetValueEvent& event) 215 220 { 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())); 217 222 } 218 223 … … 220 225 av::osg::TexturedQuad::getMaxAnisotropyCB(const av::SFFloat::GetValueEvent& event) 221 226 { 222 *(event.getValuePtr()) = mOsgTexture->getMaxAnisotropy();227 *(event.getValuePtr()) = Texture.getValue()->getOsgTexture2D()->getMaxAnisotropy(); 223 228 } 224 229 … … 226 231 av::osg::TexturedQuad::setMaxAnisotropyCB(const av::SFFloat::SetValueEvent& event) 227 232 { 228 mOsgTexture->setMaxAnisotropy(event.getValue());229 } 233 Texture.getValue()->getOsgTexture2D()->setMaxAnisotropy(event.getValue()); 234 }
Note: See TracChangeset
for help on using the changeset viewer.
