Changeset 1984

Show
Ignore:
Timestamp:
06/24/03 23:57:13 (11 years ago)
Author:
robert
Message:

Additions since the CVS back up was made.

Location:
OpenSceneGraph/trunk
Files:
39 added
18 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/Make/makedirdefs

    r1983 r1984  
    136136        osgshape\ 
    137137        osgstereoimage\ 
    138         osgstereoimage\ 
    139138        osgteapot\ 
    140139        osgtext\ 
     
    149148        osgviewer\ 
    150149        osgprerendercubemap\ 
    151  
     150        osgslideshow\ 
     151         
    152152#       osgsimulation\ 
    153153#       osgdemeter\ 
  • OpenSceneGraph/trunk/VisualStudio/osg/osg.dsp

    r1983 r1984  
    422422# Begin Source File 
    423423 
    424 SOURCE=..\..\src\osg\TransformAttributeFunctor.cpp 
    425 # End Source File 
    426 # Begin Source File 
    427  
    428424SOURCE=..\..\src\osg\BlendFunc.cpp 
    429425# End Source File 
     
    841837# End Source File 
    842838# Begin Source File 
    843  
    844 SOURCE=..\..\Include\Osg\TransformAttributeFunctor 
    845 # End Source File 
    846 # Begin Source File 
    847  
    848839 
    849840SOURCE=..\..\Include\Osg\TriangleFunctor 
  • OpenSceneGraph/trunk/VisualStudio/osgPlugins/osg/dot_osg.dsp

    r1960 r1984  
    271271# Begin Source File 
    272272 
     273SOURCE=..\..\..\src\osgPlugins\osg\TessellationHints.cpp 
     274# End Source File 
     275# Begin Source File 
     276 
    273277SOURCE=..\..\..\src\osgPlugins\osg\TexEnv.cpp 
    274278# End Source File 
  • OpenSceneGraph/trunk/VisualStudio/osgUtil/osgUtil.dsp

    r1889 r1984  
    178178# Begin Source File 
    179179 
     180SOURCE=..\..\src\osgUtil\TransformAttributeFunctor.cpp 
     181# End Source File 
     182# Begin Source File 
     183 
    180184SOURCE=..\..\src\osgUtil\TriStripVisitor.cpp 
    181185# End Source File 
     
    283287 
    284288SOURCE=..\..\include\osgUtil\TransformCallback 
     289# End Source File 
     290# Begin Source File 
     291 
     292SOURCE=..\..\include\osgUtil\TransformAttributeFunctor 
    285293# End Source File 
    286294# Begin Source File 
  • OpenSceneGraph/trunk/examples/osgshape/osgshape.cpp

    r1844 r1984  
    3535    float height = 1.0f; 
    3636     
    37     geode->addDrawable(new osg::ShapeDrawable(new osg::Sphere(osg::Vec3(0.0f,0.0f,0.0f),radius))); 
    38     geode->addDrawable(new osg::ShapeDrawable(new osg::Box(osg::Vec3(2.0f,0.0f,0.0f),2*radius))); 
    39     geode->addDrawable(new osg::ShapeDrawable(new osg::Cone(osg::Vec3(4.0f,0.0f,0.0f),radius,height))); 
    40     geode->addDrawable(new osg::ShapeDrawable(new osg::Cylinder(osg::Vec3(6.0f,0.0f,0.0f),radius,height))); 
     37    osg::TessellationHints* hints = new osg::TessellationHints; 
     38    hints->setDetailRatio(0.5f); 
     39     
     40    geode->addDrawable(new osg::ShapeDrawable(new osg::Sphere(osg::Vec3(0.0f,0.0f,0.0f),radius),hints)); 
     41    geode->addDrawable(new osg::ShapeDrawable(new osg::Box(osg::Vec3(2.0f,0.0f,0.0f),2*radius),hints)); 
     42    geode->addDrawable(new osg::ShapeDrawable(new osg::Cone(osg::Vec3(4.0f,0.0f,0.0f),radius,height),hints)); 
     43    geode->addDrawable(new osg::ShapeDrawable(new osg::Cylinder(osg::Vec3(6.0f,0.0f,0.0f),radius,height),hints)); 
    4144 
    4245    osg::Grid* grid = new osg::Grid; 
  • OpenSceneGraph/trunk/include/osg/Geometry

    r1983 r1984  
    395395}; 
    396396 
     397/** Convenience function to be used for creating quad geometry with texture coords. 
     398  * Tex coords go from bottom left (0,0) to top right (1,1).*/ 
     399extern SG_EXPORT Geometry* createTexturedQuadGeometry(const Vec3& corner,const Vec3& widthVec,const Vec3& heightVec); 
     400 
     401 
    397402 
    398403} 
  • OpenSceneGraph/trunk/include/osg/ShapeDrawable

    r1920 r1984  
    3030        TessellationHints(): 
    3131            _TessellationMode(USE_SHAPE_DEFAULTS), 
     32            _detailRatio(1.0f), 
    3233            _targetNumFaces(100), 
    3334            _createFrontFace(true), 
     
    4344            Object(tess,copyop), 
    4445            _TessellationMode(tess._TessellationMode), 
     46            _detailRatio(tess._detailRatio), 
    4547            _targetNumFaces(tess._targetNumFaces), 
    4648            _createFrontFace(tess._createFrontFace), 
     
    6365        inline void setTessellationMode(TessellationMode mode) { _TessellationMode=mode; } 
    6466        inline TessellationMode getTessellationMode() const { return _TessellationMode; } 
     67 
     68        inline void setDetailRatio(float ratio) { _detailRatio = ratio; } 
     69        inline float getDetailRatio() const { return _detailRatio; } 
    6570 
    6671        inline void setTargetNumFaces(unsigned int target) { _targetNumFaces=target; } 
     
    9499         
    95100        TessellationMode _TessellationMode; 
     101 
     102        float           _detailRatio; 
    96103        unsigned int    _targetNumFaces; 
    97104 
     
    113120        ShapeDrawable(); 
    114121 
    115         ShapeDrawable(Shape* shape); 
     122        ShapeDrawable(Shape* shape,TessellationHints* hints=0); 
    116123 
    117124        /** Copy constructor using CopyOp to manage deep vs shallow copy.*/ 
  • OpenSceneGraph/trunk/include/osg/Texture2D

    r1927 r1984  
    2626         
    2727        Texture2D(); 
     28 
     29        Texture2D(osg::Image* image); 
    2830 
    2931        /** Copy constructor using CopyOp to manage deep vs shallow copy.*/ 
  • OpenSceneGraph/trunk/src/osg/GNUmakefile

    r1983 r1984  
    8484        TextureCubeMap.cpp\ 
    8585        TextureRectangle.cpp\ 
    86         TransformAttributeFunctor.cpp\ 
    8786        Timer.cpp\ 
    8887        Transform.cpp\ 
  • OpenSceneGraph/trunk/src/osg/Geometry.cpp

    r1983 r1984  
    21852185    } 
    21862186} 
     2187 
     2188 
     2189Geometry* osg::createTexturedQuadGeometry(const osg::Vec3& corner,const osg::Vec3& widthVec,const osg::Vec3& heightVec) 
     2190{ 
     2191    Geometry* geom = new Geometry; 
     2192 
     2193    Vec3Array* coords = new Vec3Array(4); 
     2194    (*coords)[0] = corner+heightVec; 
     2195    (*coords)[1] = corner; 
     2196    (*coords)[2] = corner+widthVec; 
     2197    (*coords)[3] = corner+widthVec+heightVec; 
     2198    geom->setVertexArray(coords); 
     2199 
     2200    Vec2Array* tcoords = new Vec2Array(4); 
     2201    (*tcoords)[0].set(0.0f,1.0f); 
     2202    (*tcoords)[1].set(0.0f,0.0f); 
     2203    (*tcoords)[2].set(1.0f,0.0f); 
     2204    (*tcoords)[3].set(1.0f,1.0f); 
     2205    geom->setTexCoordArray(0,tcoords); 
     2206 
     2207    osg::Vec4Array* colours = new osg::Vec4Array(1); 
     2208    (*colours)[0].set(1.0f,1.0f,1.0,1.0f); 
     2209    geom->setColorArray(colours); 
     2210    geom->setColorBinding(Geometry::BIND_OVERALL); 
     2211 
     2212    osg::Vec3Array* normals = new osg::Vec3Array(1); 
     2213    (*normals)[0] = widthVec^heightVec; 
     2214    (*normals)[0].normalize(); 
     2215    geom->setNormalArray(normals); 
     2216    geom->setNormalBinding(Geometry::BIND_OVERALL); 
     2217 
     2218    geom->addPrimitiveSet(new DrawArrays(PrimitiveSet::QUADS,0,4)); 
     2219     
     2220    return geom; 
     2221} 
  • OpenSceneGraph/trunk/src/osg/Image.cpp

    r1983 r1984  
    161161        default: 
    162162        { 
    163             std::cout<<"error format = "<<std::hex<<format<<std::endl; 
     163            notify(WARN)<<"error format = "<<std::hex<<format<<std::endl; 
    164164            return 0; 
    165165        } 
     
    209209        default:  
    210210        { 
    211             std::cout<<"error type = "<<type<<std::endl; 
     211            notify(WARN)<<"error type = "<<type<<std::endl; 
    212212            return 0; 
    213213        } 
     
    221221    int widthInBits = width*pixelSize; 
    222222    int packingInBits = packing*8; 
    223     std::cout << "width="<<width<<" pixelSize="<<pixelSize<<"  width in bit="<<widthInBits<<" packingInBits="<<packingInBits<<" widthInBits%packingInBits="<<widthInBits%packingInBits<<std::endl; 
     223    //notify(INFO) << "width="<<width<<" pixelSize="<<pixelSize<<"  width in bit="<<widthInBits<<" packingInBits="<<packingInBits<<" widthInBits%packingInBits="<<widthInBits%packingInBits<<std::endl; 
    224224    return (widthInBits/packingInBits + ((widthInBits%packingInBits)?1:0))*packing; 
    225225} 
     
    268268                                   r*t; 
    269269 
    270    // std::cout<<"sizeOfLastMipMap="<<sizeOfLastMipMap<<"\ts="<<s<<"\tt="<<t<<"\tr"<<r<<std::endl;                   
     270   // notify(INFO)<<"sizeOfLastMipMap="<<sizeOfLastMipMap<<"\ts="<<s<<"\tt="<<t<<"\tr"<<r<<std::endl;                   
    271271     
    272272   return maxValue+sizeOfLastMipMap; 
     
    492492    if (!_data) 
    493493    { 
    494         cout<<"allocating image"<<endl; 
     494        notify(INFO)<<"allocating image"<<endl; 
    495495        allocateImage(s_offset+source->r(),t_offset+source->t(),r_offset+source->t(), 
    496496                    source->getPixelFormat(),source->getDataType(), 
  • OpenSceneGraph/trunk/src/osg/ShapeDrawable.cpp

    r1890 r1984  
    1717using namespace osg; 
    1818 
     19// arbitrary minima for rows & segments 
     20const unsigned int MIN_NUM_ROWS = 3; 
     21const unsigned int MIN_NUM_SEGMENTS = 5; 
     22 
     23 
    1924/////////////////////////////////////////////////////////////////////////////// 
    2025// 
     
    3035            _hints(hints) 
    3136        { 
     37#if 0 
    3238            if (hints) 
    3339            { 
    3440                notify(NOTICE)<<"Warning: TessellationHints ignored in present osg::ShapeDrawable implementation."<<std::endl; 
    3541            } 
    36          
     42#endif    
    3743        } 
    3844     
     
    6066        glTranslatef(sphere.getCenter().x(),sphere.getCenter().y(),sphere.getCenter().z()); 
    6167         
    62          
    6368        unsigned int numSegments = 40; 
    6469        unsigned int numRows = 20; 
     70        if (_hints && _hints->getDetailRatio() != 1.0f) { 
     71            float ratio = _hints->getDetailRatio(); 
     72            numRows = (unsigned int) (numRows * ratio); 
     73            if (numRows < MIN_NUM_ROWS) 
     74                numRows = MIN_NUM_ROWS; 
     75            numSegments = (unsigned int) (numSegments * ratio); 
     76            if (numSegments < MIN_NUM_SEGMENTS) 
     77                numSegments = MIN_NUM_SEGMENTS; 
     78        } 
    6579         
    6680        float lDelta = osg::PI/(float)numRows; 
     
    7791        float nRatioBase=0.0f; 
    7892         
    79         for(unsigned int rowi=0; 
    80             rowi<numRows; 
    81             ++rowi) 
     93        for(unsigned int rowi=0; rowi<numRows; ++rowi) 
    8294        { 
    8395 
     
    94106                float texCoord = 0.0f; 
    95107 
    96                 for(unsigned int topi=0; 
    97                     topi<numSegments; 
     108                for(unsigned int topi=0; topi<numSegments; 
    98109                    ++topi,angle+=angleDelta,texCoord+=texCoordHorzDelta) 
    99110                { 
     
    136147 
    137148        } 
    138          
    139          
    140149 
    141150    glPopMatrix();         
     
    144153void DrawShapeVisitor::apply(const Box& box) 
    145154{ 
     155    // evaluate hints 
     156    bool createBody = (_hints ? _hints->getCreateBody() : true); 
     157    bool createTop = (_hints ? _hints->getCreateTop() : true); 
     158    bool createBottom = (_hints ? _hints->getCreateBottom() : true); 
    146159 
    147160    float dx = box.getHalfLengths().x(); 
     
    161174        glBegin(GL_QUADS); 
    162175 
     176        if (createBody) { 
    163177            // -ve y plane 
    164178            glNormal3f(0.0f,-1.0f,0.0f); 
     
    220234            glTexCoord2f(1.0f,1.0f); 
    221235            glVertex3f(-dx,-dy,dz); 
    222  
     236        } 
     237 
     238        if (createTop) { 
    223239            // +ve z plane 
    224240            glNormal3f(0.0f,0.0f,1.0f); 
     
    235251            glTexCoord2f(1.0f,1.0f); 
    236252            glVertex3f(dx,dy,dz); 
    237  
     253        } 
     254 
     255        if (createBottom) { 
    238256            // -ve z plane 
    239257            glNormal3f(0.0f,0.0f,-1.0f); 
     
    250268            glTexCoord2f(1.0f,1.0f); 
    251269            glVertex3f(-dx,dy,-dz); 
     270        } 
    252271 
    253272        glEnd(); 
     
    269288        } 
    270289 
     290        // evaluate hints 
     291        bool createBody = (_hints ? _hints->getCreateBody() : true); 
     292        bool createBottom = (_hints ? _hints->getCreateBottom() : true); 
    271293 
    272294        unsigned int numSegments = 40; 
    273295        unsigned int numRows = 10; 
     296        if (_hints && _hints->getDetailRatio() != 1.0f) { 
     297            float ratio = _hints->getDetailRatio(); 
     298            numRows = (unsigned int) (numRows * ratio); 
     299            if (numRows < MIN_NUM_ROWS) 
     300                numRows = MIN_NUM_ROWS; 
     301            numSegments = (unsigned int) (numSegments * ratio); 
     302            if (numSegments < MIN_NUM_SEGMENTS) 
     303                numSegments = MIN_NUM_SEGMENTS; 
     304        } 
    274305         
    275306        float r = cone.getRadius(); 
     
    295326        float texCoord; 
    296327 
    297         for(unsigned int rowi=0; 
    298             rowi<numRows; 
    299             ++rowi,topz=basez, basez-=hDelta, topr=baser, baser+=rDelta, topv=basev, basev-=texCoordRowDelta) 
    300         { 
    301             // we can't use a fan for the cone top 
    302             // since we need different normals at the top 
    303             // for each face.. 
    304             glBegin(GL_QUAD_STRIP); 
    305  
    306                 angle = 0.0f; 
    307                 texCoord = 0.0f; 
    308                 for(unsigned int topi=0; 
    309                     topi<numSegments; 
    310                     ++topi,angle+=angleDelta,texCoord+=texCoordHorzDelta) 
    311                 { 
    312  
    313                     float c = cosf(angle); 
    314                     float s = sinf(angle); 
    315  
    316                     glNormal3f(c*normalRatio,s*normalRatio,normalz); 
    317  
    318                     glTexCoord2f(texCoord,topv); 
    319                     glVertex3f(c*topr,s*topr,topz); 
    320  
    321                     glTexCoord2f(texCoord,basev); 
    322                     glVertex3f(c*baser,s*baser,basez); 
    323  
    324                 } 
    325  
    326                 // do last point by hand to ensure no round off errors. 
    327                 glNormal3f(normalRatio,0.0f,normalz); 
    328  
    329                 glTexCoord2f(1.0f,topv); 
    330                 glVertex3f(topr,0.0f,topz); 
    331  
    332                 glTexCoord2f(1.0f,basev); 
    333                 glVertex3f(baser,0.0f,basez); 
    334  
    335             glEnd(); 
    336  
    337         } 
    338  
    339         // we can't use a fan for the cone top 
    340         // since we need different normals at the top 
    341         // for each face.. 
    342         glBegin(GL_TRIANGLE_FAN); 
    343          
    344             angle = osg::PI*2.0f; 
    345             texCoord = 1.0f; 
    346             basez = cone.getBaseOffset(); 
    347  
    348             glNormal3f(0.0f,0.0f,-1.0f); 
    349             glTexCoord2f(0.5f,0.5f); 
    350             glVertex3f(0.0f,0.0f,basez); 
    351  
    352             for(unsigned int bottomi=0; 
    353                 bottomi<numSegments; 
    354                 ++bottomi,angle-=angleDelta,texCoord-=texCoordHorzDelta) 
    355             { 
    356  
    357                 float c = cosf(angle); 
    358                 float s = sinf(angle); 
    359  
    360                 glTexCoord2f(c*0.5f+0.5f,s*0.5f+0.5f); 
    361                 glVertex3f(c*r,s*r,basez); 
    362  
    363             } 
    364  
    365             glTexCoord2f(1.0f,0.0f); 
    366             glVertex3f(r,0.0f,basez); 
    367          
    368         glEnd(); 
    369  
     328        if (createBody) { 
     329            for(unsigned int rowi=0; rowi<numRows; 
     330                ++rowi,topz=basez, basez-=hDelta, topr=baser, baser+=rDelta, topv=basev, basev-=texCoordRowDelta) { 
     331                    // we can't use a fan for the cone top 
     332                    // since we need different normals at the top 
     333                    // for each face.. 
     334                    glBegin(GL_QUAD_STRIP); 
     335 
     336                    angle = 0.0f; 
     337                    texCoord = 0.0f; 
     338                    for(unsigned int topi=0; topi<numSegments; 
     339                        ++topi,angle+=angleDelta,texCoord+=texCoordHorzDelta) { 
     340 
     341                        float c = cosf(angle); 
     342                        float s = sinf(angle); 
     343 
     344                        glNormal3f(c*normalRatio,s*normalRatio,normalz); 
     345 
     346                        glTexCoord2f(texCoord,topv); 
     347                        glVertex3f(c*topr,s*topr,topz); 
     348 
     349                        glTexCoord2f(texCoord,basev); 
     350                        glVertex3f(c*baser,s*baser,basez); 
     351                    } 
     352 
     353                    // do last point by hand to ensure no round off errors. 
     354                    glNormal3f(normalRatio,0.0f,normalz); 
     355 
     356                    glTexCoord2f(1.0f,topv); 
     357                    glVertex3f(topr,0.0f,topz); 
     358 
     359                    glTexCoord2f(1.0f,basev); 
     360                    glVertex3f(baser,0.0f,basez); 
     361 
     362                    glEnd(); 
     363            } 
     364        } 
     365 
     366        if (createBottom) { 
     367            glBegin(GL_TRIANGLE_FAN); 
     368         
     369            angle = osg::PI*2.0f; 
     370            texCoord = 1.0f; 
     371            basez = cone.getBaseOffset(); 
     372 
     373            glNormal3f(0.0f,0.0f,-1.0f); 
     374            glTexCoord2f(0.5f,0.5f); 
     375            glVertex3f(0.0f,0.0f,basez); 
     376 
     377            for(unsigned int bottomi=0; bottomi<numSegments; 
     378                ++bottomi,angle-=angleDelta,texCoord-=texCoordHorzDelta) { 
     379 
     380                float c = cosf(angle); 
     381                float s = sinf(angle); 
     382 
     383                glTexCoord2f(c*0.5f+0.5f,s*0.5f+0.5f); 
     384                glVertex3f(c*r,s*r,basez); 
     385            } 
     386 
     387            glTexCoord2f(1.0f,0.0f); 
     388            glVertex3f(r,0.0f,basez); 
     389 
     390            glEnd(); 
     391        } 
     392         
    370393    glPopMatrix(); 
    371394} 
     
    383406        } 
    384407 
     408        // evaluate hints 
     409        bool createBody = (_hints ? _hints->getCreateBody() : true); 
     410        bool createTop = (_hints ? _hints->getCreateTop() : true); 
     411        bool createBottom = (_hints ? _hints->getCreateBottom() : true); 
    385412 
    386413        unsigned int numSegments = 40; 
     414        if (_hints && _hints->getDetailRatio() != 1.0f) { 
     415            float ratio = _hints->getDetailRatio(); 
     416            numSegments = (unsigned int) (numSegments * ratio); 
     417            if (numSegments < MIN_NUM_SEGMENTS) 
     418                numSegments = MIN_NUM_SEGMENTS; 
     419        } 
    387420         
    388421        float angleDelta = 2.0f*osg::PI/(float)numSegments; 
    389          
    390         float texCoordDelta = 1.0/(float)numSegments; 
     422        float texCoordDelta = 1.0f/(float)numSegments; 
    391423         
    392424        float r = cylinder.getRadius(); 
     
    396428        float topz = h*0.5f; 
    397429         
     430        float angle = 0.0f; 
     431        float texCoord = 0.0f; 
     432 
    398433        // cylinder body 
    399         glBegin(GL_QUAD_STRIP); 
    400          
    401             float angle = 0.0f; 
    402             float texCoord = 0.0f; 
     434        if (createBody) { 
     435            glBegin(GL_QUAD_STRIP); 
     436         
    403437            for(unsigned int bodyi=0; 
    404438                bodyi<numSegments; 
    405439                ++bodyi,angle+=angleDelta,texCoord+=texCoordDelta) 
    406440            { 
    407  
    408441                float c = cosf(angle); 
    409442                float s = sinf(angle); 
     
    416449                glTexCoord2f(texCoord,0.0f); 
    417450                glVertex3f(c*r,s*r,basez); 
    418  
    419451            } 
    420452 
     
    428460            glVertex3f(r,0.0f,basez); 
    429461         
    430         glEnd(); 
    431  
    432  
    433  
    434         // cylinder top 
    435         glBegin(GL_TRIANGLE_FAN); 
     462            glEnd(); 
     463        } 
     464 
     465        // cylinder top 
     466        if (createTop) { 
     467            glBegin(GL_TRIANGLE_FAN); 
    436468         
    437469            glNormal3f(0.0f,0.0f,1.0f); 
     
    445477                ++topi,angle+=angleDelta,texCoord+=texCoordDelta) 
    446478            { 
    447  
    448479                float c = cosf(angle); 
    449480                float s = sinf(angle); 
     
    451482                glTexCoord2f(c*0.5f+0.5f,s*0.5f+0.5f); 
    452483                glVertex3f(c*r,s*r,topz); 
    453  
    454484            } 
    455485 
     
    457487            glVertex3f(r,0.0f,topz); 
    458488         
    459         glEnd(); 
     489            glEnd(); 
     490        } 
    460491 
    461492        // cylinder bottom 
    462         glBegin(GL_TRIANGLE_FAN); 
     493        if (createBottom) { 
     494            glBegin(GL_TRIANGLE_FAN); 
    463495         
    464496            glNormal3f(0.0f,0.0f,-1.0f); 
     
    472504                ++bottomi,angle-=angleDelta,texCoord-=texCoordDelta) 
    473505            { 
    474  
    475506                float c = cosf(angle); 
    476507                float s = sinf(angle); 
     
    478509                glTexCoord2f(c*0.5f+0.5f,s*0.5f+0.5f); 
    479510                glVertex3f(c*r,s*r,basez); 
    480  
    481511            } 
    482512 
     
    484514            glVertex3f(r,0.0f,basez); 
    485515         
    486         glEnd(); 
     516            glEnd(); 
     517        } 
    487518 
    488519    glPopMatrix(); 
     
    520551        glEnd(); 
    521552     } 
    522  
    523  
    524553} 
    525554 
     
    12631292} 
    12641293 
    1265 ShapeDrawable::ShapeDrawable(Shape* shape): 
    1266   _color(1.0f,1.0f,1.0f,1.0f) 
     1294ShapeDrawable::ShapeDrawable(Shape* shape,TessellationHints* hints): 
     1295  _color(1.0f,1.0f,1.0f,1.0f), 
     1296  _tessellationHints(hints) 
    12671297{ 
    12681298    setShape(shape); 
  • OpenSceneGraph/trunk/src/osg/Texture2D.cpp

    r1927 r1984  
    2929} 
    3030 
     31Texture2D::Texture2D(osg::Image* image): 
     32            _textureWidth(0), 
     33            _textureHeight(0), 
     34            _numMipmapLevels(0) 
     35{ 
     36    setUseHardwareMipMapGeneration(true); 
     37    setImage(image); 
     38} 
     39 
    3140Texture2D::Texture2D(const Texture2D& text,const CopyOp& copyop): 
    3241            Texture(text,copyop), 
  • OpenSceneGraph/trunk/src/osgPlugins/osg/GNUmakefile

    r1960 r1984  
    4848        Stencil.cpp\ 
    4949        Switch.cpp\ 
     50        TessellationHints.cpp\ 
    5051        TexEnv.cpp\ 
    5152        TexEnvCombine.cpp\ 
  • OpenSceneGraph/trunk/src/osgPlugins/osg/ShapeDrawable.cpp

    r1890 r1984  
    11#include <osg/ShapeDrawable> 
     2#include <osg/Notify> 
    23 
    34#include <osgDB/Registry> 
     
    1112bool ShapeDrawable_readLocalData(Object& obj, Input& fr); 
    1213bool ShapeDrawable_writeLocalData(const Object& obj, Output& fw); 
    13  
    14 // //register the read and write functions with the osgDB::Registry. 
    15 // RegisterDotOsgWrapperProxy g_ShapeDrawableFuncProxy 
    16 // ( 
    17 //     new osg::ShapeDrawable, 
    18 //     "ShapeDrawable", 
    19 //     "Object Drawable ShapeDrawable", 
    20 //     0, 
    21 //     0, 
    22 //     DotOsgWrapper::READ_AND_WRITE 
    23 // ); 
    2414 
    2515RegisterDotOsgWrapperProxy g_ShapeDrawableFuncProxy 
     
    5343    } 
    5444 
     45    ref_ptr<Object> readObject = fr.readObject(); 
     46    if (readObject.valid()) { 
     47        TessellationHints* hints = dynamic_cast<TessellationHints*>(readObject.get()); 
     48        if (hints) 
     49            geom.setTessellationHints(hints); 
     50        else 
     51            notify(WARN) << "Warning: " << readObject->className() << " loaded but cannot be attached to ShapeDrawable.\n"; 
     52        iteratorAdvanced = true; 
     53    } 
     54 
    5555    return iteratorAdvanced; 
    5656} 
     
    6262    fw.indent() << "color " << geom.getColor() << std::endl; 
    6363 
     64    const TessellationHints* hints = geom.getTessellationHints(); 
     65    if (hints) 
     66        fw.writeObject(*hints); 
     67 
    6468    return true; 
    6569} 
  • OpenSceneGraph/trunk/src/osgSim/GNUmakefile

    r1983 r1984  
    1010    Sector.cpp\ 
    1111    Version.cpp\ 
    12  
     12     
    1313#    SphereSegment.cpp\ 
    1414 
  • OpenSceneGraph/trunk/src/osgUtil/GNUmakefile

    r1889 r1984  
    2222        Tesselator.cpp\ 
    2323        TransformCallback.cpp\ 
     24        TransformAttributeFunctor.cpp\ 
    2425        TriStripVisitor.cpp\ 
    2526        TriStrip_tri_stripper.cpp\ 
  • OpenSceneGraph/trunk/src/osgUtil/Optimizer.cpp

    r1983 r1984  
    1414 
    1515#include <osg/Transform> 
    16 #include <osg/TransformAttributeFunctor> 
    1716#include <osg/MatrixTransform> 
    1817#include <osg/PositionAttitudeTransform> 
     
    2625#include <osg/Switch> 
    2726 
     27#include <osgUtil/TransformAttributeFunctor> 
     28 
    2829#include <typeinfo> 
    2930#include <algorithm> 
     
    498499    if (drawable) 
    499500    { 
    500         osg::TransformAttributeFunctor tf(matrix); 
     501        osgUtil::TransformAttributeFunctor tf(matrix); 
    501502        drawable->accept(tf); 
    502503        drawable->dirtyBound(); 
     
    533534        matrix_no_trans.setTrans(0.0f,0.0f,0.0f); 
    534535   
    535         osg::TransformAttributeFunctor tf(matrix_no_trans); 
     536        osgUtil::TransformAttributeFunctor tf(matrix_no_trans); 
    536537 
    537538        osg::Vec3 axis = osg::Matrix::transform3x3(tf._im,billboard->getAxis());