<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>OpenSceneGraph: osgFX::Effect Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.7.4 --> <div id="top"> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">OpenSceneGraph <span id="projectnumber">2.8.4</span></div> </td> </tr> </tbody> </table> </div> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="a01631.html">osgFX</a> </li> <li class="navelem"><a class="el" href="a00240.html">Effect</a> </li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-types">Public Types</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="#pro-methods">Protected Member Functions</a> | <a href="#friends">Friends</a> </div> <div class="headertitle"> <div class="title">osgFX::Effect Class Reference</div> </div> </div> <div class="contents"> <!-- doxytag: class="osgFX::Effect" --><!-- doxytag: inherits="osg::Group" --> <p>The base class for special effects. <a href="a00240.html#details">More...</a></p> <div class="dynheader"> Inheritance diagram for osgFX::Effect:</div> <div class="dyncontent"> <div class="center"><img src="a02421.png" border="0" usemap="#osgFX_1_1Effect_inherit__map" alt="Inheritance graph"/></div> <map name="osgFX_1_1Effect_inherit__map" id="osgFX_1_1Effect_inherit__map"> <area shape="rect" id="node11" href="a00026.html" title="This single-pass effect implements a sort of anisotropic lighting that replaces the standard OpenGL l..." alt="" coords="788,5,985,35"/><area shape="rect" id="node13" href="a00081.html" title="This effect makes surfaces appear bumpy." alt="" coords="804,59,969,88"/><area shape="rect" id="node15" href="a00096.html" title="This effect implements a technique called 'Cel-Shading' to produce a cartoon-style (non photorealisti..." alt="" coords="824,112,949,141"/><area shape="rect" id="node17" href="a00690.html" title="This is a two-passes effect; the first pass renders the subgraph as usual while the second pass switc..." alt="" coords="831,165,943,195"/><area shape="rect" id="node19" href="a00729.html" title="This effect applies additive specular highlights at fragment level (instead of OpenGL's vertex-level ..." alt="" coords="789,219,984,248"/><area shape="rect" id="node2" href="a00338.html" title="General group node which maintains a list of children." alt="" coords="481,112,575,141"/><area shape="rect" id="node4" href="a00491.html" title="Base class for all internal nodes in the scene graph." alt="" coords="341,112,432,141"/><area shape="rect" id="node6" href="a00500.html" title="Base class/standard interface for objects which require IO support, cloning and reference counting..." alt="" coords="191,112,292,141"/><area shape="rect" id="node8" href="a00627.html" title="Base class from providing referencing counted objects." alt="" coords="7,112,140,141"/></map> <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> <p><a href="a02422.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="pub-types"></a> Public Types</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#afdd8b91d87a880297c460ba6c89eab1a">TechniqueSelection</a> { <a class="el" href="a00240.html#afdd8b91d87a880297c460ba6c89eab1aaf8922462cb7e2011105b6ff91a5a121d">AUTO_DETECT</a> = -1 }</td></tr> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a4f79008ba334b6054af9599b2349ec29">Effect</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a0a576df683ba1cc515222cfec974d808">Effect</a> (const <a class="el" href="a00240.html">Effect</a> &copy, const <a class="el" href="a00169.html">osg::CopyOp</a> &copyop=osg::CopyOp::SHALLOW_COPY)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#ae7e9d697a0799d3f9444e487f7037f2e">isSameKindAs</a> (const <a class="el" href="a00500.html">osg::Object</a> *obj) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return true if this and obj are of the same kind of object. <a href="#ae7e9d697a0799d3f9444e487f7037f2e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a03988033b6926c39e7ffa24b55f3016e">libraryName</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return the name of the node's library. <a href="#a03988033b6926c39e7ffa24b55f3016e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a53879e548b131307ab557eb9c24ad4f2">className</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">return the name of the node's class type. <a href="#a53879e548b131307ab557eb9c24ad4f2"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a268f7ea056f32f0f20598cef685ac21c">effectName</a> () const =0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">get the name of this <a class="el" href="a00240.html" title="The base class for special effects.">Effect</a> <a href="#a268f7ea056f32f0f20598cef685ac21c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a25b027f258cce14e437f02e22fbbb2d1">effectDescription</a> () const =0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">get a brief description of this <a class="el" href="a00240.html" title="The base class for special effects.">Effect</a> <a href="#a25b027f258cce14e437f02e22fbbb2d1"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a2d91ff0525da25cff936413330076c3d">effectAuthor</a> () const =0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">get the effect author's name <a href="#a2d91ff0525da25cff936413330076c3d"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a44a4eb97bc904e7895279cc05ff00ffe">getEnabled</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">get whether the effect is enabled or not <a href="#a44a4eb97bc904e7895279cc05ff00ffe"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a74f8dc3e89e7ea7d7d4132fb3dce0910">setEnabled</a> (bool v)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">set whether the effect is enabled or not <a href="#a74f8dc3e89e7ea7d7d4132fb3dce0910"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a4b2d856c4220e962d251d773616723b5">setUpDemo</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">optional: set effect parameters to produce a visually significant result to be used in demo applications like osgfxbrowser. <a href="#a4b2d856c4220e962d251d773616723b5"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#aa7dc84de5721c1204b0c1fd6fdf97eab">getNumTechniques</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">get the number of techniques defined for this <a class="el" href="a00240.html" title="The base class for special effects.">Effect</a> <a href="#aa7dc84de5721c1204b0c1fd6fdf97eab"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00858.html">Technique</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a135eebba360858cb7c20272f46485703">getTechnique</a> (int i)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">get the i-th <a class="el" href="a00858.html" title="This is the base class for effect techniques.">Technique</a> <a href="#a135eebba360858cb7c20272f46485703"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">const <a class="el" href="a00858.html">Technique</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a48e5f7f7246ef72a58b3c9d5744f938d">getTechnique</a> (int i) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">get the i-th const <a class="el" href="a00858.html" title="This is the base class for effect techniques.">Technique</a> <a href="#a48e5f7f7246ef72a58b3c9d5744f938d"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a14654f46e259ac4eb696ac27ebaac0f9">getSelectedTechnique</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">get the index of the currently selected <a class="el" href="a00858.html" title="This is the base class for effect techniques.">Technique</a> <a href="#a14654f46e259ac4eb696ac27ebaac0f9"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a89c02307b2e4bb8b417ff245ed65623e">selectTechnique</a> (int i=AUTO_DETECT)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">select a technique or enable automatic detection <a href="#a89c02307b2e4bb8b417ff245ed65623e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#aceebb7f8d95c8531b4ed1fe27b45a8f3">traverse</a> (<a class="el" href="a00497.html">osg::NodeVisitor</a> &nv)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">custom traversal <a href="#aceebb7f8d95c8531b4ed1fe27b45a8f3"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a8ea44062a9a3cc789cf7a0633f35ac11">inherited_traverse</a> (<a class="el" href="a00497.html">osg::NodeVisitor</a> &nv)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">default traversal <a href="#a8ea44062a9a3cc789cf7a0633f35ac11"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pro-methods"></a> Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a918d2f8ffc3088ea3be3b62718019ec8">~Effect</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="a00240.html">Effect</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a196dc29c578e6f77e9ddb8e18dace267">operator=</a> (const <a class="el" href="a00240.html">Effect</a> &)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a629ee628dd192951fa5334c9f15d2935">dirtyTechniques</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">force rebuilding of techniques on next traversal <a href="#a629ee628dd192951fa5334c9f15d2935"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#acc6ad2b71579a412c7832196e893fffa">addTechnique</a> (<a class="el" href="a00858.html">Technique</a> *tech)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">add a technique to the <a class="el" href="a00240.html" title="The base class for special effects.">Effect</a> <a href="#acc6ad2b71579a412c7832196e893fffa"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a76b13241e1beacb906050721a4eeeb21">define_techniques</a> ()=0</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">abstract method to be implemented in derived classes; its purpose if to create the techniques that can be used for obtaining the desired effect. <a href="#a76b13241e1beacb906050721a4eeeb21"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="friends"></a> Friends</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a5929181addf27f130c7f8f99eeba3256">Validator</a></td></tr> </table> <hr/><a name="details" id="details"></a><h2>Detailed Description</h2> <div class="textblock"><p>The base class for special effects. </p> <p>An effect is basically a collection of state attributes and an interface for configuring them in a predefined fashion. The <a class="el" href="a00240.html" title="The base class for special effects.">Effect</a> class does more however, as it handles multipass rendering transparently and it allows more than one "technique" to be defined. Each technique tries to implement the effect in a different way, often using different OpenGL extensions. The active technique can be selected either manually, with <a class="el" href="a00240.html#a89c02307b2e4bb8b417ff245ed65623e" title="select a technique or enable automatic detection">selectTechnique()</a>, or automatically, in which case the first technique that is supported by all active rendering contexts is chosen. If you are an <a class="el" href="a00240.html" title="The base class for special effects.">Effect</a> user, then simply use it as a node group. Create an instance of your desired effect, add it to your scene graph and call its <a class="el" href="a00338.html#aa1192dd83d1efa5b2f360eff8c4ea6fc" title="Add Node to Group.">addChild()</a> method to add a child node as you would do with a Group. If you are an <a class="el" href="a00240.html" title="The base class for special effects.">Effect</a> developer, you will have to implement the method <a class="el" href="a00240.html#a76b13241e1beacb906050721a4eeeb21" title="abstract method to be implemented in derived classes; its purpose if to create the techniques that ca...">define_techniques()</a> to define the different techniques that can be used for obtaining the desired effect. In <a class="el" href="a00240.html#a76b13241e1beacb906050721a4eeeb21" title="abstract method to be implemented in derived classes; its purpose if to create the techniques that ca...">define_techniques()</a> you will usually create one or more instances of custom classes derived from <a class="el" href="a00858.html" title="This is the base class for effect techniques.">Technique</a> and you will add them to the effect with <a class="el" href="a00240.html#acc6ad2b71579a412c7832196e893fffa" title="add a technique to the Effect">addTechnique()</a>. The order is important: techniques added first will have higher priority and will be used first as soon as all rendering contexts support it. </p> </div><hr/><h2>Member Enumeration Documentation</h2> <a class="anchor" id="afdd8b91d87a880297c460ba6c89eab1a"></a><!-- doxytag: member="osgFX::Effect::TechniqueSelection" ref="afdd8b91d87a880297c460ba6c89eab1a" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="a00240.html#afdd8b91d87a880297c460ba6c89eab1a">osgFX::Effect::TechniqueSelection</a></td> </tr> </table> </div> <div class="memdoc"> <dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" id="afdd8b91d87a880297c460ba6c89eab1aaf8922462cb7e2011105b6ff91a5a121d"></a><!-- doxytag: member="AUTO_DETECT" ref="afdd8b91d87a880297c460ba6c89eab1aaf8922462cb7e2011105b6ff91a5a121d" args="" -->AUTO_DETECT</em> </td><td> </td></tr> </table> </dd> </dl> </div> </div> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="a4f79008ba334b6054af9599b2349ec29"></a><!-- doxytag: member="osgFX::Effect::Effect" ref="a4f79008ba334b6054af9599b2349ec29" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">osgFX::Effect::Effect </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a0a576df683ba1cc515222cfec974d808"></a><!-- doxytag: member="osgFX::Effect::Effect" ref="a0a576df683ba1cc515222cfec974d808" args="(const Effect &copy, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">osgFX::Effect::Effect </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00240.html">Effect</a> & </td> <td class="paramname"><em>copy</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="a00169.html">osg::CopyOp</a> & </td> <td class="paramname"><em>copyop</em> = <code>osg::CopyOp::SHALLOW_COPY</code> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a918d2f8ffc3088ea3be3b62718019ec8"></a><!-- doxytag: member="osgFX::Effect::~Effect" ref="a918d2f8ffc3088ea3be3b62718019ec8" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual osgFX::Effect::~Effect </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [protected, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="acc6ad2b71579a412c7832196e893fffa"></a><!-- doxytag: member="osgFX::Effect::addTechnique" ref="acc6ad2b71579a412c7832196e893fffa" args="(Technique *tech)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgFX::Effect::addTechnique </td> <td>(</td> <td class="paramtype"><a class="el" href="a00858.html">Technique</a> * </td> <td class="paramname"><em>tech</em></td><td>)</td> <td><code> [inline, protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p>add a technique to the <a class="el" href="a00240.html" title="The base class for special effects.">Effect</a> </p> </div> </div> <a class="anchor" id="a53879e548b131307ab557eb9c24ad4f2"></a><!-- doxytag: member="osgFX::Effect::className" ref="a53879e548b131307ab557eb9c24ad4f2" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual const char* osgFX::Effect::className </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>return the name of the node's class type. </p> <p>Reimplemented from <a class="el" href="a00491.html#accf4145d104408ed2337166df77aa404">osg::Node</a>.</p> </div> </div> <a class="anchor" id="a76b13241e1beacb906050721a4eeeb21"></a><!-- doxytag: member="osgFX::Effect::define_techniques" ref="a76b13241e1beacb906050721a4eeeb21" args="()=0" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual bool osgFX::Effect::define_techniques </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [protected, pure virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>abstract method to be implemented in derived classes; its purpose if to create the techniques that can be used for obtaining the desired effect. </p> <p>You will usually call <a class="el" href="a00240.html#acc6ad2b71579a412c7832196e893fffa" title="add a technique to the Effect">addTechnique()</a> inside this method. </p> <p>Implemented in <a class="el" href="a00026.html#a94dd3d34f9c1ad547025d18d0661378d">osgFX::AnisotropicLighting</a>, <a class="el" href="a00081.html#adb61a15fa1a96248a8c924eb79244ce4">osgFX::BumpMapping</a>, <a class="el" href="a00096.html#afdaa441f3f55ee1283168054342fb890">osgFX::Cartoon</a>, <a class="el" href="a00690.html#ad8d9be60ff219974cb883d3faa20e95b">osgFX::Scribe</a>, and <a class="el" href="a00729.html#a15c2f940cd7d39fc0987efa90a104c0c">osgFX::SpecularHighlights</a>.</p> </div> </div> <a class="anchor" id="a629ee628dd192951fa5334c9f15d2935"></a><!-- doxytag: member="osgFX::Effect::dirtyTechniques" ref="a629ee628dd192951fa5334c9f15d2935" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgFX::Effect::dirtyTechniques </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [inline, protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p>force rebuilding of techniques on next traversal </p> <p>Referenced by <a class="el" href="a00081.html#a07a235d0f9f13111e56ac353ae7d06d7">osgFX::BumpMapping::setDiffuseTextureUnit()</a>, <a class="el" href="a00729.html#a7b3f57870cc859983c553572ade45a27">osgFX::SpecularHighlights::setLightNumber()</a>, <a class="el" href="a00096.html#a27e6d349029b022f1994d7eca0e1ec21">osgFX::Cartoon::setLightNumber()</a>, <a class="el" href="a00081.html#a3026e41f3ad7959b2635f5f26164dd77">osgFX::BumpMapping::setLightNumber()</a>, <a class="el" href="a00026.html#a026d45e51ea21f2658e3cb399823b1ae">osgFX::AnisotropicLighting::setLightNumber()</a>, <a class="el" href="a00081.html#ae442c44ab3ab93067f0854e2197980b2">osgFX::BumpMapping::setNormalMapTextureUnit()</a>, <a class="el" href="a00081.html#aaff2a4d884f84a13b2f6a8fb1eaab8c5">osgFX::BumpMapping::setOverrideDiffuseTexture()</a>, <a class="el" href="a00081.html#a720fd654f765566d90d75503e2f39e9a">osgFX::BumpMapping::setOverrideNormalMapTexture()</a>, <a class="el" href="a00729.html#a8586ba98f8432b491c852bc9a1d5205a">osgFX::SpecularHighlights::setSpecularColor()</a>, <a class="el" href="a00729.html#a5500cc55407903eae5f729ad226f86a7">osgFX::SpecularHighlights::setSpecularExponent()</a>, and <a class="el" href="a00729.html#a09595aa652bfca42831c9f0100fe09ca">osgFX::SpecularHighlights::setTextureUnit()</a>.</p> </div> </div> <a class="anchor" id="a2d91ff0525da25cff936413330076c3d"></a><!-- doxytag: member="osgFX::Effect::effectAuthor" ref="a2d91ff0525da25cff936413330076c3d" args="() const =0" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual const char* osgFX::Effect::effectAuthor </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [pure virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>get the effect author's name </p> </div> </div> <a class="anchor" id="a25b027f258cce14e437f02e22fbbb2d1"></a><!-- doxytag: member="osgFX::Effect::effectDescription" ref="a25b027f258cce14e437f02e22fbbb2d1" args="() const =0" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual const char* osgFX::Effect::effectDescription </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [pure virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>get a brief description of this <a class="el" href="a00240.html" title="The base class for special effects.">Effect</a> </p> </div> </div> <a class="anchor" id="a268f7ea056f32f0f20598cef685ac21c"></a><!-- doxytag: member="osgFX::Effect::effectName" ref="a268f7ea056f32f0f20598cef685ac21c" args="() const =0" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual const char* osgFX::Effect::effectName </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [pure virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>get the name of this <a class="el" href="a00240.html" title="The base class for special effects.">Effect</a> </p> <p>Referenced by <a class="el" href="a00638.html#a598c3255a989a1c1932fedc60787abd1">osgFX::Registry::registerEffect()</a>.</p> </div> </div> <a class="anchor" id="a44a4eb97bc904e7895279cc05ff00ffe"></a><!-- doxytag: member="osgFX::Effect::getEnabled" ref="a44a4eb97bc904e7895279cc05ff00ffe" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool osgFX::Effect::getEnabled </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>get whether the effect is enabled or not </p> </div> </div> <a class="anchor" id="aa7dc84de5721c1204b0c1fd6fdf97eab"></a><!-- doxytag: member="osgFX::Effect::getNumTechniques" ref="aa7dc84de5721c1204b0c1fd6fdf97eab" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int osgFX::Effect::getNumTechniques </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>get the number of techniques defined for this <a class="el" href="a00240.html" title="The base class for special effects.">Effect</a> </p> </div> </div> <a class="anchor" id="a14654f46e259ac4eb696ac27ebaac0f9"></a><!-- doxytag: member="osgFX::Effect::getSelectedTechnique" ref="a14654f46e259ac4eb696ac27ebaac0f9" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int osgFX::Effect::getSelectedTechnique </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>get the index of the currently selected <a class="el" href="a00858.html" title="This is the base class for effect techniques.">Technique</a> </p> </div> </div> <a class="anchor" id="a135eebba360858cb7c20272f46485703"></a><!-- doxytag: member="osgFX::Effect::getTechnique" ref="a135eebba360858cb7c20272f46485703" args="(int i)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00858.html">Technique</a> * osgFX::Effect::getTechnique </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>i</em></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>get the i-th <a class="el" href="a00858.html" title="This is the base class for effect techniques.">Technique</a> </p> </div> </div> <a class="anchor" id="a48e5f7f7246ef72a58b3c9d5744f938d"></a><!-- doxytag: member="osgFX::Effect::getTechnique" ref="a48e5f7f7246ef72a58b3c9d5744f938d" args="(int i) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="a00858.html">Technique</a> * osgFX::Effect::getTechnique </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>i</em></td><td>)</td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>get the i-th const <a class="el" href="a00858.html" title="This is the base class for effect techniques.">Technique</a> </p> </div> </div> <a class="anchor" id="a8ea44062a9a3cc789cf7a0633f35ac11"></a><!-- doxytag: member="osgFX::Effect::inherited_traverse" ref="a8ea44062a9a3cc789cf7a0633f35ac11" args="(osg::NodeVisitor &nv)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgFX::Effect::inherited_traverse </td> <td>(</td> <td class="paramtype"><a class="el" href="a00497.html">osg::NodeVisitor</a> & </td> <td class="paramname"><em>nv</em></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>default traversal </p> <p>References <a class="el" href="a00240.html#aceebb7f8d95c8531b4ed1fe27b45a8f3">traverse()</a>.</p> </div> </div> <a class="anchor" id="ae7e9d697a0799d3f9444e487f7037f2e"></a><!-- doxytag: member="osgFX::Effect::isSameKindAs" ref="ae7e9d697a0799d3f9444e487f7037f2e" args="(const osg::Object *obj) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual bool osgFX::Effect::isSameKindAs </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00500.html">osg::Object</a> * </td> <td class="paramname"><em>obj</em></td><td>)</td> <td> const<code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>return true if this and obj are of the same kind of object. </p> <p>Reimplemented from <a class="el" href="a00491.html#a3e31528058dae0a90b113adee3653ecc">osg::Node</a>.</p> <p>References <a class="el" href="a01157.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>.</p> </div> </div> <a class="anchor" id="a03988033b6926c39e7ffa24b55f3016e"></a><!-- doxytag: member="osgFX::Effect::libraryName" ref="a03988033b6926c39e7ffa24b55f3016e" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual const char* osgFX::Effect::libraryName </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const<code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>return the name of the node's library. </p> <p>Reimplemented from <a class="el" href="a00491.html#a40919ed617cdf7238ad99e5d2f0a330f">osg::Node</a>.</p> </div> </div> <a class="anchor" id="a196dc29c578e6f77e9ddb8e18dace267"></a><!-- doxytag: member="osgFX::Effect::operator=" ref="a196dc29c578e6f77e9ddb8e18dace267" args="(const Effect &)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="a00240.html">Effect</a>& osgFX::Effect::operator= </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00240.html">Effect</a> & </td> <td class="paramname"></td><td>)</td> <td><code> [inline, protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a89c02307b2e4bb8b417ff245ed65623e"></a><!-- doxytag: member="osgFX::Effect::selectTechnique" ref="a89c02307b2e4bb8b417ff245ed65623e" args="(int i=AUTO_DETECT)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgFX::Effect::selectTechnique </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>i</em> = <code>AUTO_DETECT</code></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>select a technique or enable automatic detection </p> </div> </div> <a class="anchor" id="a74f8dc3e89e7ea7d7d4132fb3dce0910"></a><!-- doxytag: member="osgFX::Effect::setEnabled" ref="a74f8dc3e89e7ea7d7d4132fb3dce0910" args="(bool v)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void osgFX::Effect::setEnabled </td> <td>(</td> <td class="paramtype">bool </td> <td class="paramname"><em>v</em></td><td>)</td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>set whether the effect is enabled or not </p> </div> </div> <a class="anchor" id="a4b2d856c4220e962d251d773616723b5"></a><!-- doxytag: member="osgFX::Effect::setUpDemo" ref="a4b2d856c4220e962d251d773616723b5" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void osgFX::Effect::setUpDemo </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [inline, virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>optional: set effect parameters to produce a visually significant result to be used in demo applications like osgfxbrowser. </p> <p>Default is to do nothing. </p> <p>Reimplemented in <a class="el" href="a00081.html#a87aa18a0807c359d0298a3c6ff6f74c7">osgFX::BumpMapping</a>.</p> </div> </div> <a class="anchor" id="aceebb7f8d95c8531b4ed1fe27b45a8f3"></a><!-- doxytag: member="osgFX::Effect::traverse" ref="aceebb7f8d95c8531b4ed1fe27b45a8f3" args="(osg::NodeVisitor &nv)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">virtual void osgFX::Effect::traverse </td> <td>(</td> <td class="paramtype"><a class="el" href="a00497.html">osg::NodeVisitor</a> & </td> <td class="paramname"><em>nv</em></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>custom traversal </p> <p>Reimplemented from <a class="el" href="a00338.html#a189db7193e544ac67947c982b39aa435">osg::Group</a>.</p> <p>Referenced by <a class="el" href="a00240.html#a8ea44062a9a3cc789cf7a0633f35ac11">inherited_traverse()</a>.</p> </div> </div> <hr/><h2>Friends And Related Function Documentation</h2> <a class="anchor" id="a5929181addf27f130c7f8f99eeba3256"></a><!-- doxytag: member="osgFX::Effect::Validator" ref="a5929181addf27f130c7f8f99eeba3256" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">friend class <a class="el" href="a01051.html">Validator</a><code> [friend]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li>osgFX/<a class="el" href="a01388.html">Effect</a></li> </ul> </div> <hr> <table border="0"><tr><td> <img src="osg32-32.png" alt="osg logo" /> </td><td> <address><small>Generated at Tue May 31 2011 04:19:35 for the <a href="http://www.openscenegraph.org/">OpenSceneGraph</a> by <a href="http://www.doxygen.org">doxygen</a> 1.7.4.</small></address> <!-- Dimitri van Heesch's e-mail address removed, lest he get messages on the OpenSceneGraph --> </td></tr></table> </body> </html>