![]() |
VR-Forces 4.0.4 Class Documentation
|
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