Added RemoveLoadedProxyNodes pass to Optimizer, set on by default at present.

This commit is contained in:
Robert Osfield
2005-04-30 15:16:05 +00:00
parent 81f60233a9
commit adba6fa559
4 changed files with 117 additions and 28 deletions

View File

@@ -41,17 +41,19 @@ class OSGUTIL_EXPORT Optimizer
{
FLATTEN_STATIC_TRANSFORMS = 0x001,
REMOVE_REDUNDANT_NODES = 0x002,
COMBINE_ADJACENT_LODS = 0x004,
SHARE_DUPLICATE_STATE = 0x008,
MERGE_GEOMETRY = 0x010,
CHECK_GEOMETRY = 0x020,
SPATIALIZE_GROUPS = 0x040,
COPY_SHARED_NODES = 0x080,
TRISTRIP_GEOMETRY = 0x100,
TESSELATE_GEOMETRY = 0x200,
OPTIMIZE_TEXTURE_SETTINGS = 0x400,
REMOVE_LOADED_PROXY_NODES = 0x004,
COMBINE_ADJACENT_LODS = 0x008,
SHARE_DUPLICATE_STATE = 0x010,
MERGE_GEOMETRY = 0x020,
CHECK_GEOMETRY = 0x040,
SPATIALIZE_GROUPS = 0x080,
COPY_SHARED_NODES = 0x100,
TRISTRIP_GEOMETRY = 0x200,
TESSELATE_GEOMETRY = 0x400,
OPTIMIZE_TEXTURE_SETTINGS = 0x800,
DEFAULT_OPTIMIZATIONS = FLATTEN_STATIC_TRANSFORMS |
REMOVE_REDUNDANT_NODES |
REMOVE_LOADED_PROXY_NODES |
COMBINE_ADJACENT_LODS |
SHARE_DUPLICATE_STATE |
MERGE_GEOMETRY |
@@ -59,6 +61,7 @@ class OSGUTIL_EXPORT Optimizer
OPTIMIZE_TEXTURE_SETTINGS,
ALL_OPTIMIZATIONS = FLATTEN_STATIC_TRANSFORMS |
REMOVE_REDUNDANT_NODES |
REMOVE_LOADED_PROXY_NODES |
COMBINE_ADJACENT_LODS |
SHARE_DUPLICATE_STATE |
MERGE_GEOMETRY |
@@ -315,7 +318,7 @@ class OSGUTIL_EXPORT Optimizer
};
/** Remove rendundant nodes, such as groups with one single child.*/
/** Remove redundant nodes, such as groups with one single child.*/
class OSGUTIL_EXPORT RemoveRedundantNodesVisitor : public BaseOptimizerVisitor
{
public:
@@ -333,6 +336,23 @@ class OSGUTIL_EXPORT Optimizer
};
/** Remove loaded proxy nodes.*/
class OSGUTIL_EXPORT RemoveLoadedProxyNodesVisitor : public BaseOptimizerVisitor
{
public:
typedef std::set<osg::Node*> NodeList;
NodeList _redundantNodeList;
RemoveLoadedProxyNodesVisitor(Optimizer* optimizer=0):
BaseOptimizerVisitor(optimizer, REMOVE_LOADED_PROXY_NODES) {}
virtual void apply(osg::ProxyNode& group);
void removeRedundantNodes();
};
/** Tesselate all geodes, to remove POLYGONS.*/
class OSGUTIL_EXPORT TesselateVisitor : public BaseOptimizerVisitor
{