VR-Forces 4.0.4 Class Documentation
include/vrvOsg/DtOptimizer.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2010 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 /******************************************************************************
00006 ** $RCSfile:  $ $Revision:  $ $State:  $
00007 ******************************************************************************/
00008 
00012 
00013 #pragma once
00014 
00015 #include <vrvOsg/vrvOsg.h>
00016 #include <osgUtil/Optimizer>
00017 #include <osgUtil/Statistics>
00018 #include <osgUtil/TriStripVisitor>
00019 
00020 namespace makVrv
00021 {
00025    class DT_DLL_VRVOSG DtOptimizer : public osgUtil::Optimizer
00026    {
00027    public:
00028 
00030       DtOptimizer(bool processProxyNodes);
00031 
00033       virtual void optimize(osg::Node* node, unsigned int options);
00034 
00035       class StatsVisitor : public osgUtil::StatsVisitor
00036       {
00037       public:
00038          StatsVisitor(bool processProxyNodes);
00039          virtual void apply(osg::ProxyNode& node);
00040       protected:
00041          bool myProcessProxyNodes;
00042       };
00043 
00044       class StaticObjectDetectionVisitor : public osgUtil::Optimizer::StaticObjectDetectionVisitor
00045       {
00046       public:
00047          StaticObjectDetectionVisitor(bool processProxyNodes);
00048          virtual void apply(osg::ProxyNode& node);
00049       protected:
00050          bool myProcessProxyNodes;
00051       };
00052 
00053       class TriStripVisitor : public osgUtil::TriStripVisitor
00054       {
00055       public:
00056          TriStripVisitor(bool processProxyNodes,Optimizer* optimizer);
00057          virtual void apply(osg::ProxyNode& node);
00058       protected:
00059          bool myProcessProxyNodes;
00060       };
00061 
00062       class RemoveEmptyNodesVisitor : public osgUtil::Optimizer::RemoveEmptyNodesVisitor
00063       {
00064       public:
00065          RemoveEmptyNodesVisitor(bool processProxyNodes,Optimizer* optimizer);
00066          virtual void apply(osg::ProxyNode& node);
00067       protected:
00068          bool myProcessProxyNodes;
00069       };
00070 
00071       class RemoveRedundantNodesVisitor : public osgUtil::Optimizer::RemoveRedundantNodesVisitor
00072       {
00073       public:
00074          RemoveRedundantNodesVisitor(bool processProxyNodes,Optimizer* optimizer);
00075          virtual void apply(osg::ProxyNode& node);
00076       protected:
00077          bool myProcessProxyNodes;
00078       };
00079 
00080       class FlattenBillboardVisitor : public osgUtil::Optimizer::FlattenBillboardVisitor
00081       {
00082       public:
00083          FlattenBillboardVisitor(bool processProxyNodes,Optimizer* optimizer);
00084          virtual void apply(osg::ProxyNode& node);
00085       protected:
00086          bool myProcessProxyNodes;
00087       };
00088 
00089       class SpatializeGroupsVisitor : public osgUtil::Optimizer::SpatializeGroupsVisitor
00090       {
00091       public:
00092          SpatializeGroupsVisitor(bool processProxyNodes,Optimizer* optimizer);
00093          virtual void apply(osg::ProxyNode& node);
00094       protected:
00095          bool myProcessProxyNodes;
00096       };
00097 
00098       class TessellateVisitor : public osgUtil::Optimizer::TessellateVisitor
00099       {
00100       public:
00101          TessellateVisitor(bool processProxyNodes,Optimizer* optimizer);
00102          virtual void apply(osg::ProxyNode& node);
00103       protected:
00104          bool myProcessProxyNodes;
00105       };
00106 
00107       class RemoveLoadedProxyNodesVisitor : public osgUtil::Optimizer::RemoveLoadedProxyNodesVisitor
00108       {
00109       public:
00110          RemoveLoadedProxyNodesVisitor(bool processProxyNodes,Optimizer* optimizer);
00111          virtual void apply(osg::ProxyNode& node);
00112       protected:
00113          bool myProcessProxyNodes;
00114       };
00115 
00116       class CombineLODsVisitor : public osgUtil::Optimizer::CombineLODsVisitor
00117       {
00118       public:
00119          CombineLODsVisitor(bool processProxyNodes,Optimizer* optimizer);
00120          virtual void apply(osg::ProxyNode& node);
00121       protected:
00122          bool myProcessProxyNodes;
00123       };
00124 
00125       class TextureVisitor : public osgUtil::Optimizer::TextureVisitor
00126       {
00127       public:
00128          TextureVisitor(bool processProxyNodes,bool changeAutoUnRef, bool valueAutoUnRef,
00129             bool changeClientImageStorage, bool valueClientImageStorage,
00130             bool changeAnisotropy, float valueAnisotropy,
00131             Optimizer* optimizer);
00132 
00133          virtual void apply(osg::ProxyNode& node);
00134       protected:
00135          bool myProcessProxyNodes;
00136       };
00137 
00138       class StateVisitor : public osgUtil::Optimizer::StateVisitor
00139       {
00140       public:
00141          StateVisitor(bool processProxyNodes, bool combineDynamicState,
00142             bool combineStaticState,bool combineUnspecifiedState, 
00143             Optimizer* optimizer);
00144          virtual void apply(osg::ProxyNode& node);
00145 
00146       protected:
00147          bool myProcessProxyNodes;
00148       };
00149 
00150       class CopySharedSubgraphsVisitor : public osgUtil::Optimizer::CopySharedSubgraphsVisitor
00151       {
00152       public:
00153          CopySharedSubgraphsVisitor(bool processProxyNodes,Optimizer* optimizer);
00154          virtual void apply(osg::ProxyNode& node);
00155       protected:
00156          bool myProcessProxyNodes;
00157       };
00158 
00159       class CombineStaticTransformsVisitor : public osgUtil::Optimizer::CombineStaticTransformsVisitor
00160       {
00161       public:
00162          CombineStaticTransformsVisitor(bool processProxyNodes,Optimizer* optimizer);
00163          virtual void apply(osg::ProxyNode& node);
00164       protected:
00165          bool myProcessProxyNodes;
00166       };
00167 
00168       class FlattenStaticTransformsDuplicatingSharedSubgraphsVisitor : public osgUtil::Optimizer::
00169          FlattenStaticTransformsDuplicatingSharedSubgraphsVisitor
00170       {
00171       public:
00172          FlattenStaticTransformsDuplicatingSharedSubgraphsVisitor(bool processProxyNodes,Optimizer* optimizer);
00173          virtual void apply(osg::ProxyNode& node);
00174       protected:
00175          bool myProcessProxyNodes;
00176       };
00177 
00178       class MergeGeodesVisitor : public osgUtil::Optimizer::MergeGeodesVisitor
00179       {
00180       public:
00181          MergeGeodesVisitor(bool processProxyNodes,Optimizer* optimizer);
00182          virtual void apply(osg::ProxyNode& node);
00183       protected:
00184          bool myProcessProxyNodes;
00185       };
00186 
00187       class CheckGeometryVisitor : public osgUtil::Optimizer::CheckGeometryVisitor
00188       {
00189       public:
00190          CheckGeometryVisitor(bool processProxyNodes,Optimizer* optimizer);
00191          virtual void apply(osg::ProxyNode& node);
00192       protected:
00193          bool myProcessProxyNodes;
00194       };
00195 
00196       class MergeGeometryVisitor : public osgUtil::Optimizer::MergeGeometryVisitor
00197       {
00198       public:
00199          MergeGeometryVisitor(bool processProxyNodes,Optimizer* optimizer);
00200          virtual void apply(osg::ProxyNode& node);
00201       protected:
00202          bool myProcessProxyNodes;
00203       };
00204 
00205       class FlattenStaticTransformsVisitor : public osgUtil::Optimizer::FlattenStaticTransformsVisitor
00206       {
00207       public:
00208          FlattenStaticTransformsVisitor(bool processProxyNodes,Optimizer* optimizer);
00209          virtual void apply(osg::ProxyNode& node);
00210       protected:
00211          bool myProcessProxyNodes;
00212       };
00213 
00214       class TextureAtlasVisitor : public osgUtil::Optimizer::TextureAtlasVisitor
00215       {
00216       public:
00217          TextureAtlasVisitor(bool processProxyNodes,Optimizer* optimizer);
00218          virtual void apply(osg::ProxyNode& node);
00219       protected:
00220          bool myProcessProxyNodes;
00221       };
00222       
00233       static int optimizationLevel01();
00234 
00253       static int optimizationLevel02();
00254 
00255    protected:
00256 
00257       bool myProcessProxyNodes;
00258    };
00259 
00260 }
00261 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)