Sophie

Sophie

distrib > Mandriva > 2010.1 > x86_64 > media > contrib-release > by-pkgid > 58828b263d8f56d90ac336dea07a4586 > files > 704

irrlicht-doc-1.6.1-1mdv2010.1.x86_64.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Irrlicht Engine: irr::video::IShaderConstantSetCallBack Class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<table class="irrlicht" >
  <tr valign="middle"> 
    <td><font size="2"><a class="qindex" href="index.html"><font color="#FFFFFF">Home</font></a> 
      | <a class="qindex" href="namespaces.html"><font color="#FFFFFF">Namespaces</font></a> 
      | <a class="qindex" href="hierarchy.html"><font color="#FFFFFF">Hierarchy</font></a> 
      | <a class="qindex" href="classes.html"><font color="#FFFFFF">Alphabetical 
      List</font></a> | <a class="qindex" href="annotated.html"><font color="#FFFFFF"> 
      Class list</font></a> | <a class="qindex" href="files.html"><font color="#FFFFFF">Files</font></a> 
      | <a class="qindex" href="namespacemembers.html"><font color="#FFFFFF"> 
      Namespace&nbsp;Members</font></a> | <a class="qindex" href="functions.html"><font color="#FFFFFF">Class 
      members</font></a> | <a class="qindex" href="globals.html"><font color="#FFFFFF">File 
      members</font></a> | <a class="qindex" href="pages.html"><font color="#FFFFFF">Tutorials</font></a></font> </td>
  </tr>
</table>
<!-- Generated by Doxygen 1.5.6 -->
  <div class="navpath"><a class="el" href="namespaceirr.html">irr</a>::<a class="el" href="namespaceirr_1_1video.html">video</a>::<a class="el" href="classirr_1_1video_1_1_i_shader_constant_set_call_back.html">IShaderConstantSetCallBack</a>
  </div>
<div class="contents">
<h1>irr::video::IShaderConstantSetCallBack Class Reference</h1><!-- doxytag: class="irr::video::IShaderConstantSetCallBack" --><!-- doxytag: inherits="irr::IReferenceCounted" -->Interface making it possible to set constants for gpu programs every frame.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="_i_shader_constant_set_call_back_8h-source.html">IShaderConstantSetCallBack.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for irr::video::IShaderConstantSetCallBack:</div>
<div class="dynsection">

<p><center><img src="classirr_1_1video_1_1_i_shader_constant_set_call_back.png" usemap="#irr::video::IShaderConstantSetCallBack_map" border="0" alt=""></center>
<map name="irr::video::IShaderConstantSetCallBack_map">
<area href="classirr_1_1_i_reference_counted.html" alt="irr::IReferenceCounted" shape="rect" coords="0,0,229,24">
</map>
</div>

<p>
<a href="classirr_1_1video_1_1_i_shader_constant_set_call_back-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classirr_1_1video_1_1_i_shader_constant_set_call_back.html#91cf4eb8d20d278defaca4e3c9390396">OnSetConstants</a> (<a class="el" href="classirr_1_1video_1_1_i_material_renderer_services.html">IMaterialRendererServices</a> *services, <a class="el" href="namespaceirr.html#c66849b7a6ed16e30ebede579f9b47c6">s32</a> userData)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called by the engine when the vertex and/or pixel shader constants for an material renderer should be set.  <a href="#91cf4eb8d20d278defaca4e3c9390396"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classirr_1_1video_1_1_i_shader_constant_set_call_back.html#837ad9419ca4c17b011af75bb24e7a72">OnSetMaterial</a> (const <a class="el" href="classirr_1_1video_1_1_s_material.html">SMaterial</a> &amp;material)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Called to let the callBack know the used material (optional method).  <a href="#837ad9419ca4c17b011af75bb24e7a72"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Interface making it possible to set constants for gpu programs every frame. 
<p>
Implement this interface in an own class and pass a pointer to it to one of the methods in <a class="el" href="classirr_1_1video_1_1_i_g_p_u_programming_services.html" title="Interface making it possible to create and use programs running on the GPU.">IGPUProgrammingServices</a> when creating a shader. The OnSetConstants method will be called every frame now. 
<p>Definition at line <a class="el" href="_i_shader_constant_set_call_back_8h-source.html#l00020">20</a> of file <a class="el" href="_i_shader_constant_set_call_back_8h-source.html">IShaderConstantSetCallBack.h</a>.</p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="91cf4eb8d20d278defaca4e3c9390396"></a><!-- doxytag: member="irr::video::IShaderConstantSetCallBack::OnSetConstants" ref="91cf4eb8d20d278defaca4e3c9390396" args="(IMaterialRendererServices *services, s32 userData)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void irr::video::IShaderConstantSetCallBack::OnSetConstants           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classirr_1_1video_1_1_i_material_renderer_services.html">IMaterialRendererServices</a> *&nbsp;</td>
          <td class="paramname"> <em>services</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="namespaceirr.html#c66849b7a6ed16e30ebede579f9b47c6">s32</a>&nbsp;</td>
          <td class="paramname"> <em>userData</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Called by the engine when the vertex and/or pixel shader constants for an material renderer should be set. 
<p>
Implement the <a class="el" href="classirr_1_1video_1_1_i_shader_constant_set_call_back.html" title="Interface making it possible to set constants for gpu programs every frame.">IShaderConstantSetCallBack</a> in an own class and implement your own OnSetConstants method using the given <a class="el" href="classirr_1_1video_1_1_i_material_renderer_services.html" title="Interface providing some methods for changing advanced, internal states of a IVideoDriver...">IMaterialRendererServices</a> interface. Pass a pointer to this class to one of the methods in <a class="el" href="classirr_1_1video_1_1_i_g_p_u_programming_services.html" title="Interface making it possible to create and use programs running on the GPU.">IGPUProgrammingServices</a> when creating a shader. The OnSetConstants method will now be called every time before geometry is being drawn using your shader material. A sample implementation would look like this: <div class="fragment"><pre class="fragment">        <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classirr_1_1video_1_1_i_shader_constant_set_call_back.html#91cf4eb8d20d278defaca4e3c9390396" title="Called by the engine when the vertex and/or pixel shader constants for an material...">OnSetConstants</a>(video::IMaterialRendererServices* services, <a class="code" href="namespaceirr.html#c66849b7a6ed16e30ebede579f9b47c6" title="32 bit signed variable.">s32</a> userData)
        {
                video::IVideoDriver* driver = services-&gt;getVideoDriver();

                <span class="comment">// set clip matrix at register 4</span>
                <a class="code" href="namespaceirr_1_1core.html#73fa92e638c5ca97efd72da307cc9b65" title="Typedef for f32 matrix.">core::matrix4</a> worldViewProj(driver-&gt;getTransform(<a class="code" href="namespaceirr_1_1video.html#15b57657a320243be03ae6f66fcff43de7ec186418508c67a7562af012d7b63f" title="Projection transformation.">video::ETS_PROJECTION</a>));
                worldViewProj *= driver-&gt;getTransform(<a class="code" href="namespaceirr_1_1video.html#15b57657a320243be03ae6f66fcff43d152f4262d5874186e0288934c7d31e14" title="View transformation.">video::ETS_VIEW</a>);
                worldViewProj *= driver-&gt;getTransform(<a class="code" href="namespaceirr_1_1video.html#15b57657a320243be03ae6f66fcff43d843cf42adb3fa9caf61c9e228cf14e85" title="World transformation.">video::ETS_WORLD</a>);
                services-&gt;setVertexShaderConstant(&amp;worldViewProj.M[0], 4, 4);
                <span class="comment">// for high level shading languages, this would be another solution:</span>
                <span class="comment">//services-&gt;setVertexShaderConstant("mWorldViewProj", worldViewProj.M, 16);</span>

                <span class="comment">// set some light color at register 9</span>
                video::SColorf col(0.0f,1.0f,1.0f,0.0f);
                services-&gt;setVertexShaderConstant(reinterpret_cast&lt;const f32*&gt;(&amp;col), 9, 1);
                <span class="comment">// for high level shading languages, this would be another solution:</span>
                <span class="comment">//services-&gt;setVertexShaderConstant("myColor", reinterpret_cast&lt;f32*&gt;(&amp;col), 4);</span>
        }
</pre></div> <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>services,:</em>&nbsp;</td><td>Pointer to an interface providing methods to set the constants for the shader. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>userData,:</em>&nbsp;</td><td>Userdata int which can be specified when creating the shader. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="837ad9419ca4c17b011af75bb24e7a72"></a><!-- doxytag: member="irr::video::IShaderConstantSetCallBack::OnSetMaterial" ref="837ad9419ca4c17b011af75bb24e7a72" args="(const SMaterial &amp;material)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void irr::video::IShaderConstantSetCallBack::OnSetMaterial           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classirr_1_1video_1_1_s_material.html">SMaterial</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>material</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [inline, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Called to let the callBack know the used material (optional method). 
<p>
<div class="fragment"><pre class="fragment">        <span class="keyword">class </span>MyCallBack : <span class="keyword">public</span> IShaderConstantSetCallBack
        {
                <span class="keyword">const</span> video::SMaterial *UsedMaterial;

                <a class="code" href="classirr_1_1video_1_1_i_shader_constant_set_call_back.html#837ad9419ca4c17b011af75bb24e7a72" title="Called to let the callBack know the used material (optional method).">OnSetMaterial</a>(<span class="keyword">const</span> video::SMaterial&amp; material)
                {
                        UsedMaterial=&amp;material;
                }

                <a class="code" href="classirr_1_1video_1_1_i_shader_constant_set_call_back.html#91cf4eb8d20d278defaca4e3c9390396" title="Called by the engine when the vertex and/or pixel shader constants for an material...">OnSetConstants</a>(IMaterialRendererServices* services, <a class="code" href="namespaceirr.html#c66849b7a6ed16e30ebede579f9b47c6" title="32 bit signed variable.">s32</a> userData)
                {
                        services-&gt;setVertexShaderConstant(<span class="stringliteral">"myColor"</span>, reinterpret_cast&lt;f32*&gt;(&amp;UsedMaterial-&gt;color), 4);
                }
        }
</pre></div> 
<p>Definition at line <a class="el" href="_i_shader_constant_set_call_back_8h-source.html#l00043">43</a> of file <a class="el" href="_i_shader_constant_set_call_back_8h-source.html">IShaderConstantSetCallBack.h</a>.</p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="_i_shader_constant_set_call_back_8h-source.html">IShaderConstantSetCallBack.h</a></ul>
</div>
<hr size="1">
<address style="align: right;">
<small> </small>
</address>
<table width="100%" border="0" cellspacing="0" cellpadding="2">
  <tr> 
    <td width="0"> <div align="left"><small><a href="http://irrlicht.sourceforge.net" target="_blank"><img src="irrlicht.png" alt="The Irrlicht Engine" align="middle" border=0 width=88 height=31></a></small></div></td>
    <td> <div align="left"><small><em><font size="2">The <a href="http://irrlicht.sourceforge.net" target="_blank">Irrlicht 
        Engine</a> Documentation &copy; 2003-2009 by Nikolaus Gebhardt. Generated 
        on Sun Jan 10 09:24:19 2010 by <a href="http://www.doxygen.org" target="_blank">Doxygen</a> 
        (1.5.6)</font></em></small></div></td>
  </tr>
</table>
<address style="align: right;">
</address>
</body>
</html>