\hypertarget{class_ogre_1_1_shadow_caster}{}\section{Ogre\+:\+:Shadow\+Caster Class Reference}
\label{class_ogre_1_1_shadow_caster}\index{Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}}


This class defines the interface that must be implemented by shadow casters.  




{\ttfamily \#include $<$Ogre\+Shadow\+Caster.\+h$>$}



Inheritance diagram for Ogre\+:\+:Shadow\+Caster\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{class_ogre_1_1_shadow_caster__inherit__graph}
\end{center}
\end{figure}
\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
typedef std\+::vector$<$ \hyperlink{class_ogre_1_1_shadow_renderable}{Shadow\+Renderable} $\ast$ $>$ \hyperlink{class_ogre_1_1_shadow_caster_ac7b3777c0e3521c021ec3a1c2c444039}{Shadow\+Renderable\+List}
\item 
typedef \hyperlink{class_ogre_1_1_vector_iterator}{Vector\+Iterator}$<$ \hyperlink{class_ogre_1_1_shadow_caster_ac7b3777c0e3521c021ec3a1c2c444039}{Shadow\+Renderable\+List} $>$ \hyperlink{class_ogre_1_1_shadow_caster_a7b0999d33e25db97d0449d6cf95cbecd}{Shadow\+Renderable\+List\+Iterator}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual \hyperlink{class_ogre_1_1_shadow_caster_aa09c6e22f9879c123355bca19c1b7131}{$\sim$\+Shadow\+Caster} ()
\item 
virtual bool \hyperlink{class_ogre_1_1_shadow_caster_a35d47283265f36187263b2738e16c563}{get\+Cast\+Shadows} (void) const =0
\begin{DoxyCompactList}\small\item\em Returns whether or not this object currently casts a shadow. \end{DoxyCompactList}\item 
virtual const \hyperlink{class_ogre_1_1_axis_aligned_box}{Axis\+Aligned\+Box} \& \hyperlink{class_ogre_1_1_shadow_caster_aaa198e27c2c631a41f8f5f51ad7d7261}{get\+Dark\+Cap\+Bounds} (const \hyperlink{class_ogre_1_1_light}{Light} \&light, \hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real} dir\+Light\+Extrusion\+Dist) const =0
\begin{DoxyCompactList}\small\item\em Gets the world space bounding box of the dark cap, as extruded using the light provided. \end{DoxyCompactList}\item 
virtual \hyperlink{class_ogre_1_1_edge_data}{Edge\+Data} $\ast$ \hyperlink{class_ogre_1_1_shadow_caster_a9ec42d43470c2e2b0f6f05221371a786}{get\+Edge\+List} (void)=0
\begin{DoxyCompactList}\small\item\em Returns details of the edges which might be used to determine a silhouette. \end{DoxyCompactList}\item 
virtual const \hyperlink{class_ogre_1_1_axis_aligned_box}{Axis\+Aligned\+Box} \& \hyperlink{class_ogre_1_1_shadow_caster_ad792b8137f18ea000c5bcbc5ae48814a}{get\+Light\+Cap\+Bounds} (void) const =0
\begin{DoxyCompactList}\small\item\em Gets the world space bounding box of the light cap. \end{DoxyCompactList}\item 
virtual \hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real} \hyperlink{class_ogre_1_1_shadow_caster_a7f8a7e2e3a9876a8453e054335d7d23c}{get\+Point\+Extrusion\+Distance} (const \hyperlink{class_ogre_1_1_light}{Light} $\ast$l) const =0
\begin{DoxyCompactList}\small\item\em Get the distance to extrude for a point/spot light. \end{DoxyCompactList}\item 
virtual \hyperlink{class_ogre_1_1_shadow_caster_a7b0999d33e25db97d0449d6cf95cbecd}{Shadow\+Renderable\+List\+Iterator} \hyperlink{class_ogre_1_1_shadow_caster_afaf1dfad22f842b9b2cb2a0beaad98eb}{get\+Shadow\+Volume\+Renderable\+Iterator} (\hyperlink{group___general_ga79dcd426d291c31072c1ad6f183715d6}{Shadow\+Technique} shadow\+Technique, const \hyperlink{class_ogre_1_1_light}{Light} $\ast$light, \hyperlink{namespace_ogre_ae906cf8e579ba8ade19879ec05b1a456}{Hardware\+Index\+Buffer\+Shared\+Ptr} $\ast$index\+Buffer, size\+\_\+t $\ast$index\+Buffer\+Used\+Size, bool \hyperlink{class_ogre_1_1_shadow_caster_acae2215c051989d544f34083a0a9bfa2}{extrude\+Vertices}, \hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real} extrusion\+Distance, unsigned long flags=0)=0
\begin{DoxyCompactList}\small\item\em Gets an iterator over the renderables required to render the shadow volume. \end{DoxyCompactList}\item 
virtual const \hyperlink{class_ogre_1_1_axis_aligned_box}{Axis\+Aligned\+Box} \& \hyperlink{class_ogre_1_1_shadow_caster_a6ab7144efe1ca481a4a9a89365ed522d}{get\+World\+Bounding\+Box} (bool derive=false) const =0
\begin{DoxyCompactList}\small\item\em Get the world bounding box of the caster. \end{DoxyCompactList}\item 
virtual bool \hyperlink{class_ogre_1_1_shadow_caster_a99cc616f547693f39fa354e6600368e6}{has\+Edge\+List} (void)=0
\begin{DoxyCompactList}\small\item\em Returns whether the object has a valid edge list. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static void \hyperlink{class_ogre_1_1_shadow_caster_a55f1de18b85d2d276b2ea38a138b4e3e}{clear\+Shadow\+Renderable\+List} (\hyperlink{class_ogre_1_1_shadow_caster_ac7b3777c0e3521c021ec3a1c2c444039}{Shadow\+Renderable\+List} \&shadow\+Renderables)
\begin{DoxyCompactList}\small\item\em Common implementation of releasing shadow renderables. \end{DoxyCompactList}\item 
static void \hyperlink{class_ogre_1_1_shadow_caster_acae2215c051989d544f34083a0a9bfa2}{extrude\+Vertices} (const \hyperlink{namespace_ogre_a05ef9b65d4ed446b994636e371bf5aab}{Hardware\+Vertex\+Buffer\+Shared\+Ptr} \&vertex\+Buffer, size\+\_\+t original\+Vertex\+Count, const \hyperlink{class_ogre_1_1_vector4}{Vector4} \&light\+Pos, \hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real} extrude\+Dist)
\begin{DoxyCompactList}\small\item\em Utility method for extruding vertices based on a light. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
This class defines the interface that must be implemented by shadow casters. 

\subsection{Member Typedef Documentation}
\mbox{\Hypertarget{class_ogre_1_1_shadow_caster_ac7b3777c0e3521c021ec3a1c2c444039}\label{class_ogre_1_1_shadow_caster_ac7b3777c0e3521c021ec3a1c2c444039}} 
\index{Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}!Shadow\+Renderable\+List@{Shadow\+Renderable\+List}}
\index{Shadow\+Renderable\+List@{Shadow\+Renderable\+List}!Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}}
\subsubsection{\texorpdfstring{Shadow\+Renderable\+List}{ShadowRenderableList}}
{\footnotesize\ttfamily typedef std\+::vector$<$\hyperlink{class_ogre_1_1_shadow_renderable}{Shadow\+Renderable}$\ast$$>$ \hyperlink{class_ogre_1_1_shadow_caster_ac7b3777c0e3521c021ec3a1c2c444039}{Ogre\+::\+Shadow\+Caster\+::\+Shadow\+Renderable\+List}}

\mbox{\Hypertarget{class_ogre_1_1_shadow_caster_a7b0999d33e25db97d0449d6cf95cbecd}\label{class_ogre_1_1_shadow_caster_a7b0999d33e25db97d0449d6cf95cbecd}} 
\index{Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}!Shadow\+Renderable\+List\+Iterator@{Shadow\+Renderable\+List\+Iterator}}
\index{Shadow\+Renderable\+List\+Iterator@{Shadow\+Renderable\+List\+Iterator}!Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}}
\subsubsection{\texorpdfstring{Shadow\+Renderable\+List\+Iterator}{ShadowRenderableListIterator}}
{\footnotesize\ttfamily typedef \hyperlink{class_ogre_1_1_vector_iterator}{Vector\+Iterator}$<$\hyperlink{class_ogre_1_1_shadow_caster_ac7b3777c0e3521c021ec3a1c2c444039}{Shadow\+Renderable\+List}$>$ \hyperlink{class_ogre_1_1_shadow_caster_a7b0999d33e25db97d0449d6cf95cbecd}{Ogre\+::\+Shadow\+Caster\+::\+Shadow\+Renderable\+List\+Iterator}}



\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{class_ogre_1_1_shadow_caster_aa09c6e22f9879c123355bca19c1b7131}\label{class_ogre_1_1_shadow_caster_aa09c6e22f9879c123355bca19c1b7131}} 
\index{Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}!````~Shadow\+Caster@{$\sim$\+Shadow\+Caster}}
\index{````~Shadow\+Caster@{$\sim$\+Shadow\+Caster}!Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}}
\subsubsection{\texorpdfstring{$\sim$\+Shadow\+Caster()}{~ShadowCaster()}}
{\footnotesize\ttfamily virtual Ogre\+::\+Shadow\+Caster\+::$\sim$\+Shadow\+Caster (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



\subsection{Member Function Documentation}
\mbox{\Hypertarget{class_ogre_1_1_shadow_caster_a35d47283265f36187263b2738e16c563}\label{class_ogre_1_1_shadow_caster_a35d47283265f36187263b2738e16c563}} 
\index{Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}!get\+Cast\+Shadows@{get\+Cast\+Shadows}}
\index{get\+Cast\+Shadows@{get\+Cast\+Shadows}!Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}}
\subsubsection{\texorpdfstring{get\+Cast\+Shadows()}{getCastShadows()}}
{\footnotesize\ttfamily virtual bool Ogre\+::\+Shadow\+Caster\+::get\+Cast\+Shadows (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}}



Returns whether or not this object currently casts a shadow. 



Implemented in \hyperlink{class_ogre_1_1_movable_object_a015c3801632c98bca5dbb5aa3da1aa24}{Ogre\+::\+Movable\+Object}.

\mbox{\Hypertarget{class_ogre_1_1_shadow_caster_a9ec42d43470c2e2b0f6f05221371a786}\label{class_ogre_1_1_shadow_caster_a9ec42d43470c2e2b0f6f05221371a786}} 
\index{Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}!get\+Edge\+List@{get\+Edge\+List}}
\index{get\+Edge\+List@{get\+Edge\+List}!Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}}
\subsubsection{\texorpdfstring{get\+Edge\+List()}{getEdgeList()}}
{\footnotesize\ttfamily virtual \hyperlink{class_ogre_1_1_edge_data}{Edge\+Data}$\ast$ Ogre\+::\+Shadow\+Caster\+::get\+Edge\+List (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}}



Returns details of the edges which might be used to determine a silhouette. 



Implemented in \hyperlink{class_ogre_1_1_entity_ab3d3d4e4aef1e2831572c2c052d29aec}{Ogre\+::\+Entity}, \hyperlink{class_ogre_1_1_movable_object_a60b24cd45c8df45654dcfa14a1293a3b}{Ogre\+::\+Movable\+Object}, \hyperlink{class_ogre_1_1_static_geometry_1_1_region_a111ad7217f020df5a38f8d218b7803c0}{Ogre\+::\+Static\+Geometry\+::\+Region}, and \hyperlink{class_ogre_1_1_manual_object_a5a53798ccf0c34105122ee77dad0904d}{Ogre\+::\+Manual\+Object}.

\mbox{\Hypertarget{class_ogre_1_1_shadow_caster_a99cc616f547693f39fa354e6600368e6}\label{class_ogre_1_1_shadow_caster_a99cc616f547693f39fa354e6600368e6}} 
\index{Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}!has\+Edge\+List@{has\+Edge\+List}}
\index{has\+Edge\+List@{has\+Edge\+List}!Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}}
\subsubsection{\texorpdfstring{has\+Edge\+List()}{hasEdgeList()}}
{\footnotesize\ttfamily virtual bool Ogre\+::\+Shadow\+Caster\+::has\+Edge\+List (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}}



Returns whether the object has a valid edge list. 



Implemented in \hyperlink{class_ogre_1_1_entity_af155dfe2635fad3ed2aff25fcde75421}{Ogre\+::\+Entity}, \hyperlink{class_ogre_1_1_movable_object_ab7c2a8be6a9bd59e6c69ee2d76945500}{Ogre\+::\+Movable\+Object}, \hyperlink{class_ogre_1_1_static_geometry_1_1_region_a5ff65b3d2928d260e96535cff3ce2ffb}{Ogre\+::\+Static\+Geometry\+::\+Region}, and \hyperlink{class_ogre_1_1_manual_object_a77b98b65fbf51b3b611b4e423c74fe79}{Ogre\+::\+Manual\+Object}.

\mbox{\Hypertarget{class_ogre_1_1_shadow_caster_a6ab7144efe1ca481a4a9a89365ed522d}\label{class_ogre_1_1_shadow_caster_a6ab7144efe1ca481a4a9a89365ed522d}} 
\index{Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}!get\+World\+Bounding\+Box@{get\+World\+Bounding\+Box}}
\index{get\+World\+Bounding\+Box@{get\+World\+Bounding\+Box}!Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}}
\subsubsection{\texorpdfstring{get\+World\+Bounding\+Box()}{getWorldBoundingBox()}}
{\footnotesize\ttfamily virtual const \hyperlink{class_ogre_1_1_axis_aligned_box}{Axis\+Aligned\+Box}\& Ogre\+::\+Shadow\+Caster\+::get\+World\+Bounding\+Box (\begin{DoxyParamCaption}\item[{bool}]{derive = {\ttfamily false} }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}}



Get the world bounding box of the caster. 



Implemented in \hyperlink{class_ogre_1_1_entity_af4d9550a668f4435b335840ebd9750c0}{Ogre\+::\+Entity}, \hyperlink{class_ogre_1_1_movable_object_ae2a149aa0e0c9f3fb57f22d5f649247a}{Ogre\+::\+Movable\+Object}, and \hyperlink{class_ogre_1_1_portal_base_a30f8ee77782ed014f76977a39b72132d}{Ogre\+::\+Portal\+Base}.

\mbox{\Hypertarget{class_ogre_1_1_shadow_caster_ad792b8137f18ea000c5bcbc5ae48814a}\label{class_ogre_1_1_shadow_caster_ad792b8137f18ea000c5bcbc5ae48814a}} 
\index{Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}!get\+Light\+Cap\+Bounds@{get\+Light\+Cap\+Bounds}}
\index{get\+Light\+Cap\+Bounds@{get\+Light\+Cap\+Bounds}!Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}}
\subsubsection{\texorpdfstring{get\+Light\+Cap\+Bounds()}{getLightCapBounds()}}
{\footnotesize\ttfamily virtual const \hyperlink{class_ogre_1_1_axis_aligned_box}{Axis\+Aligned\+Box}\& Ogre\+::\+Shadow\+Caster\+::get\+Light\+Cap\+Bounds (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}}



Gets the world space bounding box of the light cap. 



Implemented in \hyperlink{class_ogre_1_1_movable_object_adfbba62eccb34cf9dcbea2231b2b311f}{Ogre\+::\+Movable\+Object}.

\mbox{\Hypertarget{class_ogre_1_1_shadow_caster_aaa198e27c2c631a41f8f5f51ad7d7261}\label{class_ogre_1_1_shadow_caster_aaa198e27c2c631a41f8f5f51ad7d7261}} 
\index{Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}!get\+Dark\+Cap\+Bounds@{get\+Dark\+Cap\+Bounds}}
\index{get\+Dark\+Cap\+Bounds@{get\+Dark\+Cap\+Bounds}!Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}}
\subsubsection{\texorpdfstring{get\+Dark\+Cap\+Bounds()}{getDarkCapBounds()}}
{\footnotesize\ttfamily virtual const \hyperlink{class_ogre_1_1_axis_aligned_box}{Axis\+Aligned\+Box}\& Ogre\+::\+Shadow\+Caster\+::get\+Dark\+Cap\+Bounds (\begin{DoxyParamCaption}\item[{const \hyperlink{class_ogre_1_1_light}{Light} \&}]{light,  }\item[{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}]{dir\+Light\+Extrusion\+Dist }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}}



Gets the world space bounding box of the dark cap, as extruded using the light provided. 



Implemented in \hyperlink{class_ogre_1_1_movable_object_ae5f087cc4afdf47f980a5777db16bb97}{Ogre\+::\+Movable\+Object}.

\mbox{\Hypertarget{class_ogre_1_1_shadow_caster_afaf1dfad22f842b9b2cb2a0beaad98eb}\label{class_ogre_1_1_shadow_caster_afaf1dfad22f842b9b2cb2a0beaad98eb}} 
\index{Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}!get\+Shadow\+Volume\+Renderable\+Iterator@{get\+Shadow\+Volume\+Renderable\+Iterator}}
\index{get\+Shadow\+Volume\+Renderable\+Iterator@{get\+Shadow\+Volume\+Renderable\+Iterator}!Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}}
\subsubsection{\texorpdfstring{get\+Shadow\+Volume\+Renderable\+Iterator()}{getShadowVolumeRenderableIterator()}}
{\footnotesize\ttfamily virtual \hyperlink{class_ogre_1_1_shadow_caster_a7b0999d33e25db97d0449d6cf95cbecd}{Shadow\+Renderable\+List\+Iterator} Ogre\+::\+Shadow\+Caster\+::get\+Shadow\+Volume\+Renderable\+Iterator (\begin{DoxyParamCaption}\item[{\hyperlink{group___general_ga79dcd426d291c31072c1ad6f183715d6}{Shadow\+Technique}}]{shadow\+Technique,  }\item[{const \hyperlink{class_ogre_1_1_light}{Light} $\ast$}]{light,  }\item[{\hyperlink{namespace_ogre_ae906cf8e579ba8ade19879ec05b1a456}{Hardware\+Index\+Buffer\+Shared\+Ptr} $\ast$}]{index\+Buffer,  }\item[{size\+\_\+t $\ast$}]{index\+Buffer\+Used\+Size,  }\item[{bool}]{extrude\+Vertices,  }\item[{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}]{extrusion\+Distance,  }\item[{unsigned long}]{flags = {\ttfamily 0} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}}



Gets an iterator over the renderables required to render the shadow volume. 

\begin{DoxyRemark}{Remarks}
Shadowable geometry should ideally be designed such that there is only one \hyperlink{class_ogre_1_1_shadow_renderable}{Shadow\+Renderable} required to render the the shadow; however this is not a necessary limitation and it can be exceeded if required. 
\end{DoxyRemark}

\begin{DoxyParams}{Parameters}
{\em shadow\+Technique} & The technique being used to generate the shadow. \\
\hline
{\em light} & The light to generate the shadow from. \\
\hline
{\em index\+Buffer} & The index buffer to build the renderables into, the current contents are assumed to be disposable. \\
\hline
{\em extrude\+Vertices} & If {\ttfamily 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). \\
\hline
{\em extrusion\+Distance} & The distance to extrude the shadow volume. \\
\hline
{\em flags} & Technique-\/specific flags, see Shadow\+Renderable\+Flags. \\
\hline
\end{DoxyParams}


Implemented in \hyperlink{class_ogre_1_1_entity_aa1f9103c03d5c8deccfe368de289522f}{Ogre\+::\+Entity}, \hyperlink{class_ogre_1_1_movable_object_ab630117b036dfadbb08aab2b51c22e6c}{Ogre\+::\+Movable\+Object}, \hyperlink{class_ogre_1_1_static_geometry_1_1_region_aa3ea53926ce713132426bd49503a0a2b}{Ogre\+::\+Static\+Geometry\+::\+Region}, and \hyperlink{class_ogre_1_1_manual_object_a87917ee5f2096373753098bfc2e179cf}{Ogre\+::\+Manual\+Object}.

\mbox{\Hypertarget{class_ogre_1_1_shadow_caster_a55f1de18b85d2d276b2ea38a138b4e3e}\label{class_ogre_1_1_shadow_caster_a55f1de18b85d2d276b2ea38a138b4e3e}} 
\index{Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}!clear\+Shadow\+Renderable\+List@{clear\+Shadow\+Renderable\+List}}
\index{clear\+Shadow\+Renderable\+List@{clear\+Shadow\+Renderable\+List}!Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}}
\subsubsection{\texorpdfstring{clear\+Shadow\+Renderable\+List()}{clearShadowRenderableList()}}
{\footnotesize\ttfamily static void Ogre\+::\+Shadow\+Caster\+::clear\+Shadow\+Renderable\+List (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_shadow_caster_ac7b3777c0e3521c021ec3a1c2c444039}{Shadow\+Renderable\+List} \&}]{shadow\+Renderables }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Common implementation of releasing shadow renderables. 

\mbox{\Hypertarget{class_ogre_1_1_shadow_caster_acae2215c051989d544f34083a0a9bfa2}\label{class_ogre_1_1_shadow_caster_acae2215c051989d544f34083a0a9bfa2}} 
\index{Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}!extrude\+Vertices@{extrude\+Vertices}}
\index{extrude\+Vertices@{extrude\+Vertices}!Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}}
\subsubsection{\texorpdfstring{extrude\+Vertices()}{extrudeVertices()}}
{\footnotesize\ttfamily static void Ogre\+::\+Shadow\+Caster\+::extrude\+Vertices (\begin{DoxyParamCaption}\item[{const \hyperlink{namespace_ogre_a05ef9b65d4ed446b994636e371bf5aab}{Hardware\+Vertex\+Buffer\+Shared\+Ptr} \&}]{vertex\+Buffer,  }\item[{size\+\_\+t}]{original\+Vertex\+Count,  }\item[{const \hyperlink{class_ogre_1_1_vector4}{Vector4} \&}]{light\+Pos,  }\item[{\hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real}}]{extrude\+Dist }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Utility method for extruding vertices based on a light. 

\begin{DoxyRemark}{Remarks}
Unfortunately, because D3D cannot handle homogeneous (4D) position coordinates in the fixed-\/function pipeline (GL can, but we have to be cross-\/\+A\+PI), 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. 
\end{DoxyRemark}

\begin{DoxyParams}{Parameters}
{\em vertex\+Buffer} & The vertex buffer containing O\+N\+LY xyz position values, which must be original\+Vertex\+Count $\ast$ 2 $\ast$ 3 floats long. \\
\hline
{\em original\+Vertex\+Count} & The count of the original number of vertices, i.\+e. the number in the mesh, not counting the doubling which has already been done (by \hyperlink{class_ogre_1_1_vertex_data_a35751c0e63acf6def8a1cf101abd1b28}{Vertex\+Data\+::prepare\+For\+Shadow\+Volume}) to provide the extruded area of the buffer. \\
\hline
{\em light\+Pos} & 4D light position in object space, when w=0.\+0f this represents a directional light. \\
\hline
{\em extrude\+Dist} & The distance to extrude. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_ogre_1_1_shadow_caster_a7f8a7e2e3a9876a8453e054335d7d23c}\label{class_ogre_1_1_shadow_caster_a7f8a7e2e3a9876a8453e054335d7d23c}} 
\index{Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}!get\+Point\+Extrusion\+Distance@{get\+Point\+Extrusion\+Distance}}
\index{get\+Point\+Extrusion\+Distance@{get\+Point\+Extrusion\+Distance}!Ogre\+::\+Shadow\+Caster@{Ogre\+::\+Shadow\+Caster}}
\subsubsection{\texorpdfstring{get\+Point\+Extrusion\+Distance()}{getPointExtrusionDistance()}}
{\footnotesize\ttfamily virtual \hyperlink{namespace_ogre_aa3a7b6dfb905e6572d62f0dfa3d4274d}{Real} Ogre\+::\+Shadow\+Caster\+::get\+Point\+Extrusion\+Distance (\begin{DoxyParamCaption}\item[{const \hyperlink{class_ogre_1_1_light}{Light} $\ast$}]{l }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}}



Get the distance to extrude for a point/spot light. 



Implemented in \hyperlink{class_ogre_1_1_movable_object_a82b518c593a2777525a02fac1e0028eb}{Ogre\+::\+Movable\+Object}.



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
\hyperlink{_ogre_shadow_caster_8h}{Ogre\+Shadow\+Caster.\+h}\end{DoxyCompactItemize}
