source: OGRE/trunk/ogrenew/Docs/api/html/classOgre_1_1ShadowCaster.html @ 692

Revision 692, 38.5 KB checked in by mattausch, 18 years ago (diff)

adding ogre 1.2 and dependencies

Line 
1<html>
2<head>
3<title>Ogre::ShadowCaster class Reference - OGRE Documentation</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
4<link type="text/css" rel="stylesheet" href="style.css">
5</head>
6
7<body>
8<!-- Generated by Doxygen 1.3.6 -->
9<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
10<h1>Ogre::ShadowCaster Class Reference</h1>This class defines the interface that must be implemented by shadow casters. 
11<a href="#_details">More...</a>
12<p>
13<code>#include &lt;<a class="el" href="OgreShadowCaster_8h-source.html">OgreShadowCaster.h</a>&gt;</code>
14<p>
15<p>Inheritance diagram for Ogre::ShadowCaster:
16<p><center><img src="classOgre_1_1ShadowCaster.png" usemap="#Ogre::ShadowCaster_map" border="0" alt=""></center>
17<map name="Ogre::ShadowCaster_map">
18<area href="classOgre_1_1MovableObject.html" alt="Ogre::MovableObject" shape="rect" coords="0,56,177,80">
19<area href="classOgre_1_1BillboardChain.html" alt="Ogre::BillboardChain" shape="rect" coords="187,112,364,136">
20<area href="classOgre_1_1BillboardSet.html" alt="Ogre::BillboardSet" shape="rect" coords="187,168,364,192">
21<area href="classOgre_1_1Entity.html" alt="Ogre::Entity" shape="rect" coords="187,224,364,248">
22<area href="classOgre_1_1Frustum.html" alt="Ogre::Frustum" shape="rect" coords="187,280,364,304">
23<area href="classOgre_1_1Light.html" alt="Ogre::Light" shape="rect" coords="187,336,364,360">
24<area href="classOgre_1_1ManualObject.html" alt="Ogre::ManualObject" shape="rect" coords="187,392,364,416">
25<area href="classOgre_1_1MovablePlane.html" alt="Ogre::MovablePlane" shape="rect" coords="187,448,364,472">
26<area href="classOgre_1_1ParticleSystem.html" alt="Ogre::ParticleSystem" shape="rect" coords="187,504,364,528">
27<area href="classOgre_1_1SimpleRenderable.html" alt="Ogre::SimpleRenderable" shape="rect" coords="187,560,364,584">
28<area href="classOgre_1_1StaticGeometry_1_1Region.html" alt="Ogre::StaticGeometry::Region" shape="rect" coords="187,616,364,640">
29<area href="classOgre_1_1TerrainRenderable.html" alt="Ogre::TerrainRenderable" shape="rect" coords="187,672,364,696">
30</map>
31<a href="classOgre_1_1ShadowCaster-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
32<tr><td></td></tr>
33<tr><td colspan=2><br><h2>Public Types</h2></td></tr>
34<tr><td class="memItemLeft" nowrap align=right valign=top>typedef std::vector&lt; <a class="el" href="classOgre_1_1ShadowRenderable.html">ShadowRenderable</a> * &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1WireBoundingBoxw0">ShadowRenderableList</a></td></tr>
35
36<tr><td class="memItemLeft" nowrap align=right valign=top>typedef <a class="el" href="classOgre_1_1VectorIterator.html">VectorIterator</a>&lt; <a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1WireBoundingBoxw0">ShadowRenderableList</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1WireBoundingBoxw1">ShadowRenderableListIterator</a></td></tr>
37
38<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
39<tr><td class="memItemLeft" nowrap align=right valign=top>virtual&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1ShadowCastera0">~ShadowCaster</a> ()</td></tr>
40
41<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1ShadowCastera1">getCastShadows</a> (void) const=0</td></tr>
42
43<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns whether or not this object currently casts a shadow.  <a href="#Ogre_1_1ShadowCastera1"></a><br><br></td></tr>
44<tr><td class="memItemLeft" nowrap align=right valign=top>virtual <a class="el" href="classOgre_1_1EdgeData.html">EdgeData</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1ShadowCastera2">getEdgeList</a> (void)=0</td></tr>
45
46<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns details of the edges which might be used to determine a silhouette.  <a href="#Ogre_1_1ShadowCastera2"></a><br><br></td></tr>
47<tr><td class="memItemLeft" nowrap align=right valign=top>virtual const <a class="el" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1ShadowCastera3">getWorldBoundingBox</a> (bool derive=false) const=0</td></tr>
48
49<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the world bounding box of the caster.  <a href="#Ogre_1_1ShadowCastera3"></a><br><br></td></tr>
50<tr><td class="memItemLeft" nowrap align=right valign=top>virtual const <a class="el" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1ShadowCastera4">getLightCapBounds</a> (void) const=0</td></tr>
51
52<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the world space bounding box of the light cap.  <a href="#Ogre_1_1ShadowCastera4"></a><br><br></td></tr>
53<tr><td class="memItemLeft" nowrap align=right valign=top>virtual const <a class="el" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1ShadowCastera5">getDarkCapBounds</a> (const <a class="el" href="classOgre_1_1Light.html">Light</a> &amp;light, <a class="el" href="namespaceOgre.html#a465">Real</a> dirLightExtrusionDist) const=0</td></tr>
54
55<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the world space bounding box of the dark cap, as extruded using the light provided.  <a href="#Ogre_1_1ShadowCastera5"></a><br><br></td></tr>
56<tr><td class="memItemLeft" nowrap align=right valign=top>virtual <a class="el" href="classOgre_1_1VectorIterator.html">ShadowRenderableListIterator</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1ShadowCastera6">getShadowVolumeRenderableIterator</a> (<a class="el" href="namespaceOgre.html#a650">ShadowTechnique</a> shadowTechnique, const <a class="el" href="classOgre_1_1Light.html">Light</a> *light, <a class="el" href="classOgre_1_1HardwareIndexBufferSharedPtr.html">HardwareIndexBufferSharedPtr</a> *indexBuffer, bool extrudeVertices, <a class="el" href="namespaceOgre.html#a465">Real</a> extrusionDistance, unsigned long flags=0)=0</td></tr>
57
58<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets an iterator over the renderables required to render the shadow volume.  <a href="#Ogre_1_1ShadowCastera6"></a><br><br></td></tr>
59<tr><td class="memItemLeft" nowrap align=right valign=top>virtual <a class="el" href="namespaceOgre.html#a465">Real</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1ShadowCastera7">getPointExtrusionDistance</a> (const <a class="el" href="classOgre_1_1Light.html">Light</a> *l) const=0</td></tr>
60
61<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the distance to extrude for a point/spot light.  <a href="#Ogre_1_1ShadowCastera7"></a><br><br></td></tr>
62<tr><td colspan=2><br><h2>Static Public Member Functions</h2></td></tr>
63<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1WireBoundingBoxe4">extrudeVertices</a> (<a class="el" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a> vertexBuffer, size_t originalVertexCount, const <a class="el" href="classOgre_1_1Vector4.html">Vector4</a> &amp;lightPos, <a class="el" href="namespaceOgre.html#a465">Real</a> extrudeDist)</td></tr>
64
65<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Utility method for extruding vertices based on a light.  <a href="#Ogre_1_1WireBoundingBoxe4"></a><br><br></td></tr>
66<tr><td colspan=2><br><h2>Protected Member Functions</h2></td></tr>
67<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="namespaceOgre.html#a465">Real</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1WireBoundingBoxb4">getExtrusionDistance</a> (const <a class="el" href="classOgre_1_1Vector3.html">Vector3</a> &amp;objectPos, const <a class="el" href="classOgre_1_1Light.html">Light</a> *light) const </td></tr>
68
69<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Helper moethod for calculating extrusion distance.  <a href="#Ogre_1_1WireBoundingBoxb4"></a><br><br></td></tr>
70<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1WireBoundingBoxb5">updateEdgeListLightFacing</a> (<a class="el" href="classOgre_1_1EdgeData.html">EdgeData</a> *edgeData, const <a class="el" href="classOgre_1_1Vector4.html">Vector4</a> &amp;lightPos)</td></tr>
71
72<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tells the caster to perform the tasks necessary to update the edge data's light listing.  <a href="#Ogre_1_1WireBoundingBoxb5"></a><br><br></td></tr>
73<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1WireBoundingBoxb6">generateShadowVolume</a> (<a class="el" href="classOgre_1_1EdgeData.html">EdgeData</a> *edgeData, <a class="el" href="classOgre_1_1HardwareIndexBufferSharedPtr.html">HardwareIndexBufferSharedPtr</a> indexBuffer, const <a class="el" href="classOgre_1_1Light.html">Light</a> *light, <a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1WireBoundingBoxw0">ShadowRenderableList</a> &amp;shadowRenderables, unsigned long flags)</td></tr>
74
75<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Generates the indexes required to render a shadow volume into the index buffer which is passed in, and updates shadow renderables to use it.  <a href="#Ogre_1_1WireBoundingBoxb6"></a><br><br></td></tr>
76<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1WireBoundingBoxb7">extrudeBounds</a> (<a class="el" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a> &amp;box, const <a class="el" href="classOgre_1_1Vector4.html">Vector4</a> &amp;lightPos, <a class="el" href="namespaceOgre.html#a465">Real</a> extrudeDist) const </td></tr>
77
78<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Utility method for extruding a bounding box.  <a href="#Ogre_1_1WireBoundingBoxb7"></a><br><br></td></tr>
79</table>
80<hr><a name="_details"></a><h2>Detailed Description</h2>
81This class defines the interface that must be implemented by shadow casters.
82<p>
83
84<p>
85Definition at line <a class="el" href="OgreShadowCaster_8h-source.html#l00104">104</a> of file <a class="el" href="OgreShadowCaster_8h-source.html">OgreShadowCaster.h</a>.<hr><h2>Member Typedef Documentation</h2>
86<a class="anchor" name="Ogre_1_1WireBoundingBoxw0" doxytag="Ogre::ShadowCaster::ShadowRenderableList" ></a><p>
87<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
88  <tr>
89    <td class="mdRow">
90      <table cellpadding="0" cellspacing="0" border="0">
91        <tr>
92          <td class="md" nowrap valign="top"> typedef std::vector&lt;<a class="el" href="classOgre_1_1ShadowRenderable.html">ShadowRenderable</a>*&gt; <a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1WireBoundingBoxw0">Ogre::ShadowCaster::ShadowRenderableList</a>
93      </table>
94    </td>
95  </tr>
96</table>
97<table cellspacing=5 cellpadding=0 border=0>
98  <tr>
99    <td>
100      &nbsp;
101    </td>
102    <td>
103
104<p>
105
106<p>
107Definition at line <a class="el" href="OgreShadowCaster_8h-source.html#l00121">121</a> of file <a class="el" href="OgreShadowCaster_8h-source.html">OgreShadowCaster.h</a>.    </td>
108  </tr>
109</table>
110<a class="anchor" name="Ogre_1_1WireBoundingBoxw1" doxytag="Ogre::ShadowCaster::ShadowRenderableListIterator" ></a><p>
111<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
112  <tr>
113    <td class="mdRow">
114      <table cellpadding="0" cellspacing="0" border="0">
115        <tr>
116          <td class="md" nowrap valign="top"> typedef <a class="el" href="classOgre_1_1VectorIterator.html">VectorIterator</a>&lt;<a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1WireBoundingBoxw0">ShadowRenderableList</a>&gt; <a class="el" href="classOgre_1_1VectorIterator.html">Ogre::ShadowCaster::ShadowRenderableListIterator</a>
117      </table>
118    </td>
119  </tr>
120</table>
121<table cellspacing=5 cellpadding=0 border=0>
122  <tr>
123    <td>
124      &nbsp;
125    </td>
126    <td>
127
128<p>
129
130<p>
131Definition at line <a class="el" href="OgreShadowCaster_8h-source.html#l00122">122</a> of file <a class="el" href="OgreShadowCaster_8h-source.html">OgreShadowCaster.h</a>.    </td>
132  </tr>
133</table>
134<hr><h2>Constructor &amp; Destructor Documentation</h2>
135<a class="anchor" name="Ogre_1_1ShadowCastera0" doxytag="Ogre::ShadowCaster::~ShadowCaster" ></a><p>
136<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
137  <tr>
138    <td class="mdRow">
139      <table cellpadding="0" cellspacing="0" border="0">
140        <tr>
141          <td class="md" nowrap valign="top"> virtual Ogre::ShadowCaster::~<a class="el" href="classOgre_1_1ShadowCaster.html">ShadowCaster</a> </td>
142          <td class="md" valign="top">(&nbsp;</td>
143          <td class="mdname1" valign="top" nowrap>          </td>
144          <td class="md" valign="top">&nbsp;)&nbsp;</td>
145          <td class="md" nowrap><code> [virtual]</code></td>
146        </tr>
147
148      </table>
149    </td>
150  </tr>
151</table>
152<table cellspacing=5 cellpadding=0 border=0>
153  <tr>
154    <td>
155      &nbsp;
156    </td>
157    <td>
158
159<p>
160
161<p>
162Definition at line <a class="el" href="OgreShadowCaster_8h-source.html#l00107">107</a> of file <a class="el" href="OgreShadowCaster_8h-source.html">OgreShadowCaster.h</a>.    </td>
163  </tr>
164</table>
165<hr><h2>Member Function Documentation</h2>
166<a class="anchor" name="Ogre_1_1WireBoundingBoxb7" doxytag="Ogre::ShadowCaster::extrudeBounds" ></a><p>
167<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
168  <tr>
169    <td class="mdRow">
170      <table cellpadding="0" cellspacing="0" border="0">
171        <tr>
172          <td class="md" nowrap valign="top"> virtual void Ogre::ShadowCaster::extrudeBounds </td>
173          <td class="md" valign="top">(&nbsp;</td>
174          <td class="md" nowrap valign="top"><a class="el" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a> &amp;&nbsp;</td>
175          <td class="mdname" nowrap> <em>box</em>, </td>
176        </tr>
177        <tr>
178          <td class="md" nowrap align="right"></td>
179          <td></td>
180          <td class="md" nowrap>const <a class="el" href="classOgre_1_1Vector4.html">Vector4</a> &amp;&nbsp;</td>
181          <td class="mdname" nowrap> <em>lightPos</em>, </td>
182        </tr>
183        <tr>
184          <td class="md" nowrap align="right"></td>
185          <td></td>
186          <td class="md" nowrap><a class="el" href="namespaceOgre.html#a465">Real</a>&nbsp;</td>
187          <td class="mdname" nowrap> <em>extrudeDist</em></td>
188        </tr>
189        <tr>
190          <td></td>
191          <td class="md">)&nbsp;</td>
192          <td class="md" colspan="2"> const<code> [protected, virtual]</code></td>
193        </tr>
194
195      </table>
196    </td>
197  </tr>
198</table>
199<table cellspacing=5 cellpadding=0 border=0>
200  <tr>
201    <td>
202      &nbsp;
203    </td>
204    <td>
205
206<p>
207Utility method for extruding a bounding box.
208<p>
209<dl compact><dt><b>Parameters:</b></dt><dd>
210  <table border="0" cellspacing="2" cellpadding="0">
211    <tr><td valign=top><em>box</em>&nbsp;</td><td>Original bounding box, will be updated in-place </td></tr>
212    <tr><td valign=top><em>lightPos</em>&nbsp;</td><td>4D light position in object space, when w=0.0f this represents a directional light </td></tr>
213    <tr><td valign=top><em>extrudeDist</em>&nbsp;</td><td>The distance to extrude </td></tr>
214  </table>
215</dl>
216    </td>
217  </tr>
218</table>
219<a class="anchor" name="Ogre_1_1WireBoundingBoxe4" doxytag="Ogre::ShadowCaster::extrudeVertices" ></a><p>
220<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
221  <tr>
222    <td class="mdRow">
223      <table cellpadding="0" cellspacing="0" border="0">
224        <tr>
225          <td class="md" nowrap valign="top"> void Ogre::ShadowCaster::extrudeVertices </td>
226          <td class="md" valign="top">(&nbsp;</td>
227          <td class="md" nowrap valign="top"><a class="el" href="classOgre_1_1HardwareVertexBufferSharedPtr.html">HardwareVertexBufferSharedPtr</a>&nbsp;</td>
228          <td class="mdname" nowrap> <em>vertexBuffer</em>, </td>
229        </tr>
230        <tr>
231          <td class="md" nowrap align="right"></td>
232          <td></td>
233          <td class="md" nowrap>size_t&nbsp;</td>
234          <td class="mdname" nowrap> <em>originalVertexCount</em>, </td>
235        </tr>
236        <tr>
237          <td class="md" nowrap align="right"></td>
238          <td></td>
239          <td class="md" nowrap>const <a class="el" href="classOgre_1_1Vector4.html">Vector4</a> &amp;&nbsp;</td>
240          <td class="mdname" nowrap> <em>lightPos</em>, </td>
241        </tr>
242        <tr>
243          <td class="md" nowrap align="right"></td>
244          <td></td>
245          <td class="md" nowrap><a class="el" href="namespaceOgre.html#a465">Real</a>&nbsp;</td>
246          <td class="mdname" nowrap> <em>extrudeDist</em></td>
247        </tr>
248        <tr>
249          <td></td>
250          <td class="md">)&nbsp;</td>
251          <td class="md" colspan="2"><code> [static]</code></td>
252        </tr>
253
254      </table>
255    </td>
256  </tr>
257</table>
258<table cellspacing=5 cellpadding=0 border=0>
259  <tr>
260    <td>
261      &nbsp;
262    </td>
263    <td>
264
265<p>
266Utility method for extruding vertices based on a light.
267<p>
268<dl compact><dt><b>Remarks:</b></dt><dd>Unfortunately, because D3D cannot handle homogenous (4D) position coordinates in the fixed-function pipeline (GL can, but we have to be cross-API), when we extrude in software we cannot extrude to infinity the way we do in the vertex program (by setting w to 0.0f). Therefore we extrude by a fixed distance, which may cause some problems with larger scenes. Luckily better hardware (ie vertex programs) can fix this. </dd></dl>
269<dl compact><dt><b>Parameters:</b></dt><dd>
270  <table border="0" cellspacing="2" cellpadding="0">
271    <tr><td valign=top><em>vertexBuffer</em>&nbsp;</td><td>The vertex buffer containing ONLY xyz position values, which must be originalVertexCount * 2 * 3 floats long. </td></tr>
272    <tr><td valign=top><em>originalVertexCount</em>&nbsp;</td><td>The count of the original number of vertices, ie the number in the mesh, not counting the doubling which has already been done (by <a class="el" href="classOgre_1_1VertexData.html#Ogre_1_1VertexDataa3">VertexData::prepareForShadowVolume</a>) to provide the extruded area of the buffer. </td></tr>
273    <tr><td valign=top><em>lightPos</em>&nbsp;</td><td>4D light position in object space, when w=0.0f this represents a directional light </td></tr>
274    <tr><td valign=top><em>extrudeDist</em>&nbsp;</td><td>The distance to extrude </td></tr>
275  </table>
276</dl>
277    </td>
278  </tr>
279</table>
280<a class="anchor" name="Ogre_1_1WireBoundingBoxb6" doxytag="Ogre::ShadowCaster::generateShadowVolume" ></a><p>
281<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
282  <tr>
283    <td class="mdRow">
284      <table cellpadding="0" cellspacing="0" border="0">
285        <tr>
286          <td class="md" nowrap valign="top"> virtual void Ogre::ShadowCaster::generateShadowVolume </td>
287          <td class="md" valign="top">(&nbsp;</td>
288          <td class="md" nowrap valign="top"><a class="el" href="classOgre_1_1EdgeData.html">EdgeData</a> *&nbsp;</td>
289          <td class="mdname" nowrap> <em>edgeData</em>, </td>
290        </tr>
291        <tr>
292          <td class="md" nowrap align="right"></td>
293          <td></td>
294          <td class="md" nowrap><a class="el" href="classOgre_1_1HardwareIndexBufferSharedPtr.html">HardwareIndexBufferSharedPtr</a>&nbsp;</td>
295          <td class="mdname" nowrap> <em>indexBuffer</em>, </td>
296        </tr>
297        <tr>
298          <td class="md" nowrap align="right"></td>
299          <td></td>
300          <td class="md" nowrap>const <a class="el" href="classOgre_1_1Light.html">Light</a> *&nbsp;</td>
301          <td class="mdname" nowrap> <em>light</em>, </td>
302        </tr>
303        <tr>
304          <td class="md" nowrap align="right"></td>
305          <td></td>
306          <td class="md" nowrap><a class="el" href="classOgre_1_1ShadowCaster.html#Ogre_1_1WireBoundingBoxw0">ShadowRenderableList</a> &amp;&nbsp;</td>
307          <td class="mdname" nowrap> <em>shadowRenderables</em>, </td>
308        </tr>
309        <tr>
310          <td class="md" nowrap align="right"></td>
311          <td></td>
312          <td class="md" nowrap>unsigned long&nbsp;</td>
313          <td class="mdname" nowrap> <em>flags</em></td>
314        </tr>
315        <tr>
316          <td></td>
317          <td class="md">)&nbsp;</td>
318          <td class="md" colspan="2"><code> [protected, virtual]</code></td>
319        </tr>
320
321      </table>
322    </td>
323  </tr>
324</table>
325<table cellspacing=5 cellpadding=0 border=0>
326  <tr>
327    <td>
328      &nbsp;
329    </td>
330    <td>
331
332<p>
333Generates the indexes required to render a shadow volume into the index buffer which is passed in, and updates shadow renderables to use it.
334<p>
335<dl compact><dt><b>Parameters:</b></dt><dd>
336  <table border="0" cellspacing="2" cellpadding="0">
337    <tr><td valign=top><em>edgeData</em>&nbsp;</td><td>The edge information to use </td></tr>
338    <tr><td valign=top><em>indexBuffer</em>&nbsp;</td><td>The buffer into which to write data into; current contents are assumed to be discardable. </td></tr>
339    <tr><td valign=top><em>light</em>&nbsp;</td><td>The light, mainly for type info as silhouette calculations should already have been done in updateEdgeListLightFacing </td></tr>
340    <tr><td valign=top><em>shadowRenderables</em>&nbsp;</td><td>A list of shadow renderables which has already been constructed but will need populating with details of the index ranges to be used. </td></tr>
341    <tr><td valign=top><em>flags</em>&nbsp;</td><td>Additional controller flags, see ShadowRenderableFlags </td></tr>
342  </table>
343</dl>
344    </td>
345  </tr>
346</table>
347<a class="anchor" name="Ogre_1_1ShadowCastera1" doxytag="Ogre::ShadowCaster::getCastShadows" ></a><p>
348<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
349  <tr>
350    <td class="mdRow">
351      <table cellpadding="0" cellspacing="0" border="0">
352        <tr>
353          <td class="md" nowrap valign="top"> virtual bool Ogre::ShadowCaster::getCastShadows </td>
354          <td class="md" valign="top">(&nbsp;</td>
355          <td class="md" nowrap valign="top">void&nbsp;</td>
356          <td class="mdname1" valign="top" nowrap>          </td>
357          <td class="md" valign="top">&nbsp;)&nbsp;</td>
358          <td class="md" nowrap> const<code> [pure virtual]</code></td>
359        </tr>
360
361      </table>
362    </td>
363  </tr>
364</table>
365<table cellspacing=5 cellpadding=0 border=0>
366  <tr>
367    <td>
368      &nbsp;
369    </td>
370    <td>
371
372<p>
373Returns whether or not this object currently casts a shadow.
374<p>
375
376<p>
377Implemented in <a class="el" href="classOgre_1_1MovableObject.html#Ogre_1_1WireBoundingBoxa51">Ogre::MovableObject</a>.    </td>
378  </tr>
379</table>
380<a class="anchor" name="Ogre_1_1ShadowCastera5" doxytag="Ogre::ShadowCaster::getDarkCapBounds" ></a><p>
381<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
382  <tr>
383    <td class="mdRow">
384      <table cellpadding="0" cellspacing="0" border="0">
385        <tr>
386          <td class="md" nowrap valign="top"> virtual const <a class="el" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a>&amp; Ogre::ShadowCaster::getDarkCapBounds </td>
387          <td class="md" valign="top">(&nbsp;</td>
388          <td class="md" nowrap valign="top">const <a class="el" href="classOgre_1_1Light.html">Light</a> &amp;&nbsp;</td>
389          <td class="mdname" nowrap> <em>light</em>, </td>
390        </tr>
391        <tr>
392          <td class="md" nowrap align="right"></td>
393          <td></td>
394          <td class="md" nowrap><a class="el" href="namespaceOgre.html#a465">Real</a>&nbsp;</td>
395          <td class="mdname" nowrap> <em>dirLightExtrusionDist</em></td>
396        </tr>
397        <tr>
398          <td></td>
399          <td class="md">)&nbsp;</td>
400          <td class="md" colspan="2"> const<code> [pure virtual]</code></td>
401        </tr>
402
403      </table>
404    </td>
405  </tr>
406</table>
407<table cellspacing=5 cellpadding=0 border=0>
408  <tr>
409    <td>
410      &nbsp;
411    </td>
412    <td>
413
414<p>
415Gets the world space bounding box of the dark cap, as extruded using the light provided.
416<p>
417
418<p>
419Implemented in <a class="el" href="classOgre_1_1MovableObject.html#Ogre_1_1WireBoundingBoxa49">Ogre::MovableObject</a>.    </td>
420  </tr>
421</table>
422<a class="anchor" name="Ogre_1_1ShadowCastera2" doxytag="Ogre::ShadowCaster::getEdgeList" ></a><p>
423<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
424  <tr>
425    <td class="mdRow">
426      <table cellpadding="0" cellspacing="0" border="0">
427        <tr>
428          <td class="md" nowrap valign="top"> virtual <a class="el" href="classOgre_1_1EdgeData.html">EdgeData</a>* Ogre::ShadowCaster::getEdgeList </td>
429          <td class="md" valign="top">(&nbsp;</td>
430          <td class="md" nowrap valign="top">void&nbsp;</td>
431          <td class="mdname1" valign="top" nowrap>          </td>
432          <td class="md" valign="top">&nbsp;)&nbsp;</td>
433          <td class="md" nowrap><code> [pure virtual]</code></td>
434        </tr>
435
436      </table>
437    </td>
438  </tr>
439</table>
440<table cellspacing=5 cellpadding=0 border=0>
441  <tr>
442    <td>
443      &nbsp;
444    </td>
445    <td>
446
447<p>
448Returns details of the edges which might be used to determine a silhouette.
449<p>
450
451<p>
452Implemented in <a class="el" href="classOgre_1_1Entity.html#Ogre_1_1Entitya32">Ogre::Entity</a>, <a class="el" href="classOgre_1_1ManualObject.html#Ogre_1_1ManualObjecta26">Ogre::ManualObject</a>, <a class="el" href="classOgre_1_1MovableObject.html#Ogre_1_1WireBoundingBoxa46">Ogre::MovableObject</a>, and <a class="el" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regiona17">Ogre::StaticGeometry::Region</a>.    </td>
453  </tr>
454</table>
455<a class="anchor" name="Ogre_1_1WireBoundingBoxb4" doxytag="Ogre::ShadowCaster::getExtrusionDistance" ></a><p>
456<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
457  <tr>
458    <td class="mdRow">
459      <table cellpadding="0" cellspacing="0" border="0">
460        <tr>
461          <td class="md" nowrap valign="top"> <a class="el" href="namespaceOgre.html#a465">Real</a> Ogre::ShadowCaster::getExtrusionDistance </td>
462          <td class="md" valign="top">(&nbsp;</td>
463          <td class="md" nowrap valign="top">const <a class="el" href="classOgre_1_1Vector3.html">Vector3</a> &amp;&nbsp;</td>
464          <td class="mdname" nowrap> <em>objectPos</em>, </td>
465        </tr>
466        <tr>
467          <td class="md" nowrap align="right"></td>
468          <td></td>
469          <td class="md" nowrap>const <a class="el" href="classOgre_1_1Light.html">Light</a> *&nbsp;</td>
470          <td class="mdname" nowrap> <em>light</em></td>
471        </tr>
472        <tr>
473          <td></td>
474          <td class="md">)&nbsp;</td>
475          <td class="md" colspan="2"> const<code> [protected]</code></td>
476        </tr>
477
478      </table>
479    </td>
480  </tr>
481</table>
482<table cellspacing=5 cellpadding=0 border=0>
483  <tr>
484    <td>
485      &nbsp;
486    </td>
487    <td>
488
489<p>
490Helper moethod for calculating extrusion distance.
491<p>
492    </td>
493  </tr>
494</table>
495<a class="anchor" name="Ogre_1_1ShadowCastera4" doxytag="Ogre::ShadowCaster::getLightCapBounds" ></a><p>
496<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
497  <tr>
498    <td class="mdRow">
499      <table cellpadding="0" cellspacing="0" border="0">
500        <tr>
501          <td class="md" nowrap valign="top"> virtual const <a class="el" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a>&amp; Ogre::ShadowCaster::getLightCapBounds </td>
502          <td class="md" valign="top">(&nbsp;</td>
503          <td class="md" nowrap valign="top">void&nbsp;</td>
504          <td class="mdname1" valign="top" nowrap>          </td>
505          <td class="md" valign="top">&nbsp;)&nbsp;</td>
506          <td class="md" nowrap> const<code> [pure virtual]</code></td>
507        </tr>
508
509      </table>
510    </td>
511  </tr>
512</table>
513<table cellspacing=5 cellpadding=0 border=0>
514  <tr>
515    <td>
516      &nbsp;
517    </td>
518    <td>
519
520<p>
521Gets the world space bounding box of the light cap.
522<p>
523
524<p>
525Implemented in <a class="el" href="classOgre_1_1MovableObject.html#Ogre_1_1WireBoundingBoxa48">Ogre::MovableObject</a>.    </td>
526  </tr>
527</table>
528<a class="anchor" name="Ogre_1_1ShadowCastera7" doxytag="Ogre::ShadowCaster::getPointExtrusionDistance" ></a><p>
529<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
530  <tr>
531    <td class="mdRow">
532      <table cellpadding="0" cellspacing="0" border="0">
533        <tr>
534          <td class="md" nowrap valign="top"> virtual <a class="el" href="namespaceOgre.html#a465">Real</a> Ogre::ShadowCaster::getPointExtrusionDistance </td>
535          <td class="md" valign="top">(&nbsp;</td>
536          <td class="md" nowrap valign="top">const <a class="el" href="classOgre_1_1Light.html">Light</a> *&nbsp;</td>
537          <td class="mdname1" valign="top" nowrap> <em>l</em>          </td>
538          <td class="md" valign="top">&nbsp;)&nbsp;</td>
539          <td class="md" nowrap> const<code> [pure virtual]</code></td>
540        </tr>
541
542      </table>
543    </td>
544  </tr>
545</table>
546<table cellspacing=5 cellpadding=0 border=0>
547  <tr>
548    <td>
549      &nbsp;
550    </td>
551    <td>
552
553<p>
554Get the distance to extrude for a point/spot light.
555<p>
556
557<p>
558Implemented in <a class="el" href="classOgre_1_1MovableObject.html#Ogre_1_1WireBoundingBoxa52">Ogre::MovableObject</a>.    </td>
559  </tr>
560</table>
561<a class="anchor" name="Ogre_1_1ShadowCastera6" doxytag="Ogre::ShadowCaster::getShadowVolumeRenderableIterator" ></a><p>
562<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
563  <tr>
564    <td class="mdRow">
565      <table cellpadding="0" cellspacing="0" border="0">
566        <tr>
567          <td class="md" nowrap valign="top"> virtual <a class="el" href="classOgre_1_1VectorIterator.html">ShadowRenderableListIterator</a> Ogre::ShadowCaster::getShadowVolumeRenderableIterator </td>
568          <td class="md" valign="top">(&nbsp;</td>
569          <td class="md" nowrap valign="top"><a class="el" href="namespaceOgre.html#a650">ShadowTechnique</a>&nbsp;</td>
570          <td class="mdname" nowrap> <em>shadowTechnique</em>, </td>
571        </tr>
572        <tr>
573          <td class="md" nowrap align="right"></td>
574          <td></td>
575          <td class="md" nowrap>const <a class="el" href="classOgre_1_1Light.html">Light</a> *&nbsp;</td>
576          <td class="mdname" nowrap> <em>light</em>, </td>
577        </tr>
578        <tr>
579          <td class="md" nowrap align="right"></td>
580          <td></td>
581          <td class="md" nowrap><a class="el" href="classOgre_1_1HardwareIndexBufferSharedPtr.html">HardwareIndexBufferSharedPtr</a> *&nbsp;</td>
582          <td class="mdname" nowrap> <em>indexBuffer</em>, </td>
583        </tr>
584        <tr>
585          <td class="md" nowrap align="right"></td>
586          <td></td>
587          <td class="md" nowrap>bool&nbsp;</td>
588          <td class="mdname" nowrap> <em>extrudeVertices</em>, </td>
589        </tr>
590        <tr>
591          <td class="md" nowrap align="right"></td>
592          <td></td>
593          <td class="md" nowrap><a class="el" href="namespaceOgre.html#a465">Real</a>&nbsp;</td>
594          <td class="mdname" nowrap> <em>extrusionDistance</em>, </td>
595        </tr>
596        <tr>
597          <td class="md" nowrap align="right"></td>
598          <td></td>
599          <td class="md" nowrap>unsigned long&nbsp;</td>
600          <td class="mdname" nowrap> <em>flags</em> = 0</td>
601        </tr>
602        <tr>
603          <td></td>
604          <td class="md">)&nbsp;</td>
605          <td class="md" colspan="2"><code> [pure virtual]</code></td>
606        </tr>
607
608      </table>
609    </td>
610  </tr>
611</table>
612<table cellspacing=5 cellpadding=0 border=0>
613  <tr>
614    <td>
615      &nbsp;
616    </td>
617    <td>
618
619<p>
620Gets an iterator over the renderables required to render the shadow volume.
621<p>
622<dl compact><dt><b>Remarks:</b></dt><dd>Shadowable geometry should ideally be designed such that there is only one <a class="el" href="classOgre_1_1ShadowRenderable.html">ShadowRenderable</a> required to render the the shadow; however this is not a necessary limitation and it can be exceeded if required. </dd></dl>
623<dl compact><dt><b>Parameters:</b></dt><dd>
624  <table border="0" cellspacing="2" cellpadding="0">
625    <tr><td valign=top><em>shadowTechnique</em>&nbsp;</td><td>The technique being used to generate the shadow </td></tr>
626    <tr><td valign=top><em>light</em>&nbsp;</td><td>The light to generate the shadow from </td></tr>
627    <tr><td valign=top><em>indexBuffer</em>&nbsp;</td><td>The index buffer to build the renderables into, the current contents are assumed to be disposable. </td></tr>
628    <tr><td valign=top><em>extrudeVertices</em>&nbsp;</td><td>If true, this means this class should extrude the vertices of the back of the volume in software. If false, it will not be done (a vertex program is assumed). </td></tr>
629    <tr><td valign=top><em>extrusionDistance</em>&nbsp;</td><td>The distance to extrude the shadow volume </td></tr>
630    <tr><td valign=top><em>flags</em>&nbsp;</td><td>Technique-specific flags, see ShadowRenderableFlags </td></tr>
631  </table>
632</dl>
633
634<p>
635Implemented in <a class="el" href="classOgre_1_1Entity.html#Ogre_1_1Entitya33">Ogre::Entity</a>, <a class="el" href="classOgre_1_1ManualObject.html#Ogre_1_1ManualObjecta27">Ogre::ManualObject</a>, <a class="el" href="classOgre_1_1MovableObject.html#Ogre_1_1WireBoundingBoxa47">Ogre::MovableObject</a>, and <a class="el" href="classOgre_1_1StaticGeometry_1_1Region.html#Ogre_1_1StaticGeometry_1_1Regiona16">Ogre::StaticGeometry::Region</a>.    </td>
636  </tr>
637</table>
638<a class="anchor" name="Ogre_1_1ShadowCastera3" doxytag="Ogre::ShadowCaster::getWorldBoundingBox" ></a><p>
639<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
640  <tr>
641    <td class="mdRow">
642      <table cellpadding="0" cellspacing="0" border="0">
643        <tr>
644          <td class="md" nowrap valign="top"> virtual const <a class="el" href="classOgre_1_1AxisAlignedBox.html">AxisAlignedBox</a>&amp; Ogre::ShadowCaster::getWorldBoundingBox </td>
645          <td class="md" valign="top">(&nbsp;</td>
646          <td class="md" nowrap valign="top">bool&nbsp;</td>
647          <td class="mdname1" valign="top" nowrap> <em>derive</em> = false          </td>
648          <td class="md" valign="top">&nbsp;)&nbsp;</td>
649          <td class="md" nowrap> const<code> [pure virtual]</code></td>
650        </tr>
651
652      </table>
653    </td>
654  </tr>
655</table>
656<table cellspacing=5 cellpadding=0 border=0>
657  <tr>
658    <td>
659      &nbsp;
660    </td>
661    <td>
662
663<p>
664Get the world bounding box of the caster.
665<p>
666
667<p>
668Implemented in <a class="el" href="classOgre_1_1Entity.html#Ogre_1_1Entitya28">Ogre::Entity</a>, and <a class="el" href="classOgre_1_1MovableObject.html#Ogre_1_1WireBoundingBoxa25">Ogre::MovableObject</a>.    </td>
669  </tr>
670</table>
671<a class="anchor" name="Ogre_1_1WireBoundingBoxb5" doxytag="Ogre::ShadowCaster::updateEdgeListLightFacing" ></a><p>
672<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
673  <tr>
674    <td class="mdRow">
675      <table cellpadding="0" cellspacing="0" border="0">
676        <tr>
677          <td class="md" nowrap valign="top"> virtual void Ogre::ShadowCaster::updateEdgeListLightFacing </td>
678          <td class="md" valign="top">(&nbsp;</td>
679          <td class="md" nowrap valign="top"><a class="el" href="classOgre_1_1EdgeData.html">EdgeData</a> *&nbsp;</td>
680          <td class="mdname" nowrap> <em>edgeData</em>, </td>
681        </tr>
682        <tr>
683          <td class="md" nowrap align="right"></td>
684          <td></td>
685          <td class="md" nowrap>const <a class="el" href="classOgre_1_1Vector4.html">Vector4</a> &amp;&nbsp;</td>
686          <td class="mdname" nowrap> <em>lightPos</em></td>
687        </tr>
688        <tr>
689          <td></td>
690          <td class="md">)&nbsp;</td>
691          <td class="md" colspan="2"><code> [protected, virtual]</code></td>
692        </tr>
693
694      </table>
695    </td>
696  </tr>
697</table>
698<table cellspacing=5 cellpadding=0 border=0>
699  <tr>
700    <td>
701      &nbsp;
702    </td>
703    <td>
704
705<p>
706Tells the caster to perform the tasks necessary to update the edge data's light listing.
707<p>
708Can be overridden if the subclass needs to do additional things. <dl compact><dt><b>Parameters:</b></dt><dd>
709  <table border="0" cellspacing="2" cellpadding="0">
710    <tr><td valign=top><em>edgeData</em>&nbsp;</td><td>The edge information to update </td></tr>
711    <tr><td valign=top><em>lightPos</em>&nbsp;</td><td>4D vector representing the light, a directional light has w=0.0 </td></tr>
712  </table>
713</dl>
714    </td>
715  </tr>
716</table>
717<hr>The documentation for this class was generated from the following file:<ul>
718<li><a class="el" href="OgreShadowCaster_8h-source.html">OgreShadowCaster.h</a></ul>
719<hr>
720<p>
721Copyright &copy; 2000-2005 by The OGRE Team<br />
722<!--Creative Commons License--><a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.png"/></a><br/>
723This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/">Creative Commons Attribution-ShareAlike 2.5 License</a>.<br/>
724                <!--/Creative Commons License--><!-- <rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
725                <Work rdf:about="">
726                        <license rdf:resource="http://creativecommons.org/licenses/by-sa/2.5/" />
727        <dc:type rdf:resource="http://purl.org/dc/dcmitype/Text" />
728                </Work>
729                <License rdf:about="http://creativecommons.org/licenses/by-sa/2.5/"><permits rdf:resource="http://web.resource.org/cc/Reproduction"/><permits rdf:resource="http://web.resource.org/cc/Distribution"/><requires rdf:resource="http://web.resource.org/cc/Notice"/><requires rdf:resource="http://web.resource.org/cc/Attribution"/><permits rdf:resource="http://web.resource.org/cc/DerivativeWorks"/><requires rdf:resource="http://web.resource.org/cc/ShareAlike"/></License></rdf:RDF> -->
730
731Last modified Sun Mar 12 14:44:07 2006
732</p>
733</body>
734</html>
Note: See TracBrowser for help on using the repository browser.