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

Revision 657, 38.1 KB checked in by mattausch, 18 years ago (diff)

added ogre dependencies and patched ogre sources

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