Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 807a538c0f4abf81467b8a86879881d9 > files > 782

OpenSceneGraph-devel-2.8.4-2.fc14.i686.rpm

<!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&#160;<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&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;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&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;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> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<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&#45;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 &#39;Cel&#45;Shading&#39; to produce a cartoon&#45;style (non photorealisti..." alt="" coords="824,112,949,141"/><area shape="rect" id="node17" href="a00690.html" title="This is a two&#45;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&#39;s vertex&#45;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 &#160;</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">&#160;</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">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a0a576df683ba1cc515222cfec974d808">Effect</a> (const <a class="el" href="a00240.html">Effect</a> &amp;copy, const <a class="el" href="a00169.html">osg::CopyOp</a> &amp;copyop=osg::CopyOp::SHALLOW_COPY)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</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">&#160;</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 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a03988033b6926c39e7ffa24b55f3016e">libraryName</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</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 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a53879e548b131307ab557eb9c24ad4f2">className</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</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 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a268f7ea056f32f0f20598cef685ac21c">effectName</a> () const =0</td></tr>
<tr><td class="mdescLeft">&#160;</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 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a25b027f258cce14e437f02e22fbbb2d1">effectDescription</a> () const =0</td></tr>
<tr><td class="mdescLeft">&#160;</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 *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a2d91ff0525da25cff936413330076c3d">effectAuthor</a> () const =0</td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a44a4eb97bc904e7895279cc05ff00ffe">getEnabled</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a74f8dc3e89e7ea7d7d4132fb3dce0910">setEnabled</a> (bool v)</td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a4b2d856c4220e962d251d773616723b5">setUpDemo</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#aa7dc84de5721c1204b0c1fd6fdf97eab">getNumTechniques</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</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> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a135eebba360858cb7c20272f46485703">getTechnique</a> (int i)</td></tr>
<tr><td class="mdescLeft">&#160;</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> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a48e5f7f7246ef72a58b3c9d5744f938d">getTechnique</a> (int i) const </td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a14654f46e259ac4eb696ac27ebaac0f9">getSelectedTechnique</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</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">&#160;</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&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#aceebb7f8d95c8531b4ed1fe27b45a8f3">traverse</a> (<a class="el" href="a00497.html">osg::NodeVisitor</a> &amp;nv)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">custom traversal  <a href="#aceebb7f8d95c8531b4ed1fe27b45a8f3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</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> &amp;nv)</td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</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> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a196dc29c578e6f77e9ddb8e18dace267">operator=</a> (const <a class="el" href="a00240.html">Effect</a> &amp;)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a629ee628dd192951fa5334c9f15d2935">dirtyTechniques</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</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">&#160;</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&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00240.html#a76b13241e1beacb906050721a4eeeb21">define_techniques</a> ()=0</td></tr>
<tr><td class="mdescLeft">&#160;</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&#160;</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>&nbsp;</td><td>
</td></tr>
</table>
</dd>
</dl>

</div>
</div>
<hr/><h2>Constructor &amp; 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 &amp;copy, const osg::CopyOp &amp;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> &amp;&#160;</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> &amp;&#160;</td>
          <td class="paramname"><em>copyop</em> = <code>osg::CopyOp::SHALLOW_COPY</code>&#160;</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> *&#160;</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&#160;</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&#160;</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 &amp;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> &amp;&#160;</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> *&#160;</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 &amp;)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00240.html">Effect</a>&amp; osgFX::Effect::operator= </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="a00240.html">Effect</a> &amp;&#160;</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&#160;</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&#160;</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 &amp;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> &amp;&#160;</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>