OpenSceneGraph/doc/doc++/osgUtil/OptimizeStateVisitor.html

93 lines
3.4 KiB
HTML
Raw Normal View History

o Added osgUtil::StateOptimizeVisitor which traversing the scene graph and builds up a map of all StateAttributes and StateSets and then removes the duplicates. This promotes state sharing throughout the scene graph which inturn can significantly improve performance thanks to reduced state changing. Particularily effective on datasets where a great deal of duplicated state exists. o Added pure virtual compare(const osg::StateAttribute&) method to osg::StateAttribute, and implemented it in all the subclasses from StateAttribute. Added <,== & != operator on StateAttribute and Matrix to support new StateOptimizeVisitor. o Added META_Object, META_Node and META_StateAttribute macros to Object, Node and StateAttribute respectively which define the standard pure virtual methods such as clone, className & isSameKindAs. Changed all the appropriate header files to use these macro's rather define them in each header, these cleans up the headers considerably. o Corrected the implementation of osg::Light::getType so it correctly uses a unique type for each of the OpenGL lights (GL_LIGHT0.. GL_LIGHT7 relates to osg::StateAttriburte::LIGHT_0..LIGHT_7. o Changed the definition of osg::StateStateAttribute::Type to is now a unsigned int rather than an enum, and have changed the name of the previous Type enum list to be Types. This makes it more consistent with the difination of values found in StateAttribute and also easier to extend with having to cast to an enum. o From Pail Fredrikson, updated Maitrx.new implemention which uses the same matrix orientation as the original Matrix implemention.
2001-09-20 07:46:48 +08:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>class OSGUTIL_EXPORT osgUtil::OptimizeStateVisitor</TITLE>
<META NAME="GENERATOR" CONTENT="DOC++ 3.4.8">
</HEAD>
<BODY BGCOLOR="#ffffff">
<H2>class OSGUTIL_EXPORT <A HREF="#DOC.DOCU">osgUtil::OptimizeStateVisitor</A></H2></H2><BLOCKQUOTE>Insert impostor nodes into scene graph.</BLOCKQUOTE>
<HR>
<H2>Inheritance:</H2>
<APPLET CODE="ClassGraph.class" WIDTH=600 HEIGHT=65>
<param name=classes value="Mosg::NodeVisitor,M,COptimizeStateVisitor,MOptimizeStateVisitor.html">
<param name=before value="M,M">
<param name=after value="Md_,M">
<param name=indent value="0,1">
<param name=arrowdir value="down">
</APPLET>
<HR>
<DL>
<P><DL>
<DT><H3>Public Methods</H3><DD><DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif> <B><A HREF="#DOC.2.16.1">OptimizeStateVisitor</A></B>()
<DD><I>default to traversing all children</I>
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.16.2">reset</A></B>()
<DD><I>empty visitor, make it ready for next traversal</I>
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.16.3">addStateSet</A></B>(osg::StateSet* stateset)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.16.4">apply</A></B>(osg::Node&amp; node)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>virtual void <B><A HREF="#DOC.2.16.5">apply</A></B>(osg::Geode&amp; geode)
<DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>void <B><A HREF="#DOC.2.16.6">optimize</A></B>()
</DL></P>
<P><DL>
<DT><H3>Protected Members</H3><DD><DT>
<IMG ALT="[more]" BORDER=0 SRC=icon1.gif>typedef std::set&lt;osg::StateSet*&gt; StateSetList StateSetList <B><A HREF="#DOC.2.16.7">_statesets</A></B>
</DL></P>
</DL>
<A NAME="DOC.DOCU"></A>
<HR>
<H2>Documentation</H2>
<BLOCKQUOTE>Insert impostor nodes into scene graph.
For example of usage see src/Demos/osgimpostor.</BLOCKQUOTE>
<DL>
<A NAME="OptimizeStateVisitor"></A>
<A NAME="DOC.2.16.1"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B> OptimizeStateVisitor()</B></TT>
<DD>default to traversing all children
<DL><DT><DD></DL><P>
<A NAME="reset"></A>
<A NAME="DOC.2.16.2"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void reset()</B></TT>
<DD>empty visitor, make it ready for next traversal
<DL><DT><DD></DL><P>
<A NAME="addStateSet"></A>
<A NAME="DOC.2.16.3"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void addStateSet(osg::StateSet* stateset)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="apply"></A>
<A NAME="DOC.2.16.4"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(osg::Node&amp; node)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="apply"></A>
<A NAME="DOC.2.16.5"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>virtual void apply(osg::Geode&amp; geode)</B></TT>
<DL><DT><DD></DL><P>
<A NAME="optimize"></A>
<A NAME="DOC.2.16.6"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>void optimize()</B></TT>
<DL><DT><DD></DL><P>
<A NAME="_statesets"></A>
<A NAME="DOC.2.16.7"></A>
<DT><IMG ALT="o" BORDER=0 SRC=icon2.gif><TT><B>typedef std::set&lt;osg::StateSet*&gt; StateSetList StateSetList _statesets</B></TT>
<DL><DT><DD></DL><P></DL>
<HR><DL><DT><B>This class has no child classes.</B></DL>
<DL><DT><DD></DL><P><P><I><A HREF="index.html">Alphabetic index</A></I> <I><A HREF="HIER.html">HTML hierarchy of classes</A> or <A HREF="HIERjava.html">Java</A></I></P><HR>
<BR>
This page was generated with the help of <A HREF="http://docpp.sourceforge.net">DOC++</A>.
</BODY>
</HTML>