VR-Vantage 2.4 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtOptimizer.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2010 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 /******************************************************************************
6 ** $RCSfile: $ $Revision: $ $State: $
7 ******************************************************************************/
8 
12 
13 #pragma once
14 
15 #include <vrvOsg/vrvOsg.h>
16 #include <osgUtil/Optimizer>
17 #include <osgUtil/Statistics>
18 #include <osgUtil/TriStripVisitor>
19 
20 namespace makVrv
21 {
25  class DT_DLL_VRVOSG DtOptimizer : public osgUtil::Optimizer
26  {
27  public:
28 
30  DtOptimizer(bool processProxyNodes);
31 
33  virtual void optimize(osg::Node* node, unsigned int options);
34 
35  class StatsVisitor : public osgUtil::StatsVisitor
36  {
37  public:
38  StatsVisitor(bool processProxyNodes);
39  virtual void apply(osg::ProxyNode& node);
40  protected:
42  };
43 
44  class StaticObjectDetectionVisitor : public osgUtil::Optimizer::StaticObjectDetectionVisitor
45  {
46  public:
47  StaticObjectDetectionVisitor(bool processProxyNodes);
48  virtual void apply(osg::ProxyNode& node);
49  protected:
51  };
52 
53  class TriStripVisitor : public osgUtil::TriStripVisitor
54  {
55  public:
56  TriStripVisitor(bool processProxyNodes,Optimizer* optimizer);
57  virtual void apply(osg::ProxyNode& node);
58  protected:
60  };
61 
62  class RemoveEmptyNodesVisitor : public osgUtil::Optimizer::RemoveEmptyNodesVisitor
63  {
64  public:
65  RemoveEmptyNodesVisitor(bool processProxyNodes,Optimizer* optimizer);
66  virtual void apply(osg::ProxyNode& node);
67  protected:
69  };
70 
71  class RemoveRedundantNodesVisitor : public osgUtil::Optimizer::RemoveRedundantNodesVisitor
72  {
73  public:
74  RemoveRedundantNodesVisitor(bool processProxyNodes,Optimizer* optimizer);
75  virtual void apply(osg::ProxyNode& node);
76  virtual void apply( osg::Group& node );
77  protected:
79  };
80 
81  class FlattenBillboardVisitor : public osgUtil::Optimizer::FlattenBillboardVisitor
82  {
83  public:
84  FlattenBillboardVisitor(bool processProxyNodes,Optimizer* optimizer);
85  virtual void apply(osg::ProxyNode& node);
86  protected:
88  };
89 
90  class SpatializeGroupsVisitor : public osgUtil::Optimizer::SpatializeGroupsVisitor
91  {
92  public:
93  SpatializeGroupsVisitor(bool processProxyNodes,Optimizer* optimizer);
94  virtual void apply(osg::ProxyNode& node);
95  protected:
97  };
98 
99  class TessellateVisitor : public osgUtil::Optimizer::TessellateVisitor
100  {
101  public:
102  TessellateVisitor(bool processProxyNodes,Optimizer* optimizer);
103  virtual void apply(osg::ProxyNode& node);
104  protected:
106  };
107 
108  class RemoveLoadedProxyNodesVisitor : public osgUtil::Optimizer::RemoveLoadedProxyNodesVisitor
109  {
110  public:
111  RemoveLoadedProxyNodesVisitor(bool processProxyNodes,Optimizer* optimizer);
112  virtual void apply(osg::ProxyNode& node);
113  protected:
115  };
116 
117  class CombineLODsVisitor : public osgUtil::Optimizer::CombineLODsVisitor
118  {
119  public:
120  CombineLODsVisitor(bool processProxyNodes,Optimizer* optimizer);
121  virtual void apply(osg::ProxyNode& node);
122  protected:
124  };
125 
126  class TextureVisitor : public osgUtil::Optimizer::TextureVisitor
127  {
128  public:
129  TextureVisitor(bool processProxyNodes,bool changeAutoUnRef, bool valueAutoUnRef,
130  bool changeClientImageStorage, bool valueClientImageStorage,
131  bool changeAnisotropy, float valueAnisotropy,
132  Optimizer* optimizer);
133 
134  virtual void apply(osg::ProxyNode& node);
135  protected:
137  };
138 
139  class StateVisitor : public osgUtil::Optimizer::StateVisitor
140  {
141  public:
142  StateVisitor(bool processProxyNodes, bool combineDynamicState,
143  bool combineStaticState,bool combineUnspecifiedState,
144  Optimizer* optimizer);
145  virtual void apply(osg::ProxyNode& node);
146 
147  protected:
149  };
150 
151  class CopySharedSubgraphsVisitor : public osgUtil::Optimizer::CopySharedSubgraphsVisitor
152  {
153  public:
154  CopySharedSubgraphsVisitor(bool processProxyNodes,Optimizer* optimizer);
155  virtual void apply(osg::ProxyNode& node);
156  protected:
158  };
159 
160  class CombineStaticTransformsVisitor : public osgUtil::Optimizer::CombineStaticTransformsVisitor
161  {
162  public:
163  CombineStaticTransformsVisitor(bool processProxyNodes,Optimizer* optimizer);
164  virtual void apply(osg::ProxyNode& node);
165  protected:
167  };
168 
171  {
172  public:
173  FlattenStaticTransformsDuplicatingSharedSubgraphsVisitor(bool processProxyNodes,Optimizer* optimizer);
174  virtual void apply(osg::ProxyNode& node);
175  protected:
177  };
178 
179  class MergeGeodesVisitor : public osgUtil::Optimizer::MergeGeodesVisitor
180  {
181  public:
182  MergeGeodesVisitor(bool processProxyNodes,Optimizer* optimizer);
183  virtual void apply(osg::ProxyNode& node);
184  protected:
186  };
187 
188  class CheckGeometryVisitor : public osgUtil::Optimizer::CheckGeometryVisitor
189  {
190  public:
191  CheckGeometryVisitor(bool processProxyNodes,Optimizer* optimizer);
192  virtual void apply(osg::ProxyNode& node);
193  protected:
195  };
196 
197  class MergeGeometryVisitor : public osgUtil::Optimizer::MergeGeometryVisitor
198  {
199  public:
200  MergeGeometryVisitor(bool processProxyNodes,Optimizer* optimizer);
201  virtual void apply(osg::ProxyNode& node);
202  protected:
204  };
205 
206  class FlattenStaticTransformsVisitor : public osgUtil::Optimizer::FlattenStaticTransformsVisitor
207  {
208  public:
209  FlattenStaticTransformsVisitor(bool processProxyNodes,Optimizer* optimizer);
210  virtual void apply(osg::ProxyNode& node);
211  protected:
213  };
214 
215  class TextureAtlasVisitor : public osgUtil::Optimizer::TextureAtlasVisitor
216  {
217  public:
218  TextureAtlasVisitor(bool processProxyNodes,Optimizer* optimizer);
219  virtual void apply(osg::ProxyNode& node);
220  protected:
222  };
223 
234  static int optimizationLevel01();
235 
246  static int optimizationLevel01Instanced();
247 
267  static int optimizationLevel02();
268 
269  protected:
270 
272  };
273 
274 }
275 


Copyright © 2005-2018 VT MAK. All Rights Reserved (www.mak.com)