\hypertarget{class_ogre_1_1_r_t_shader_1_1_hardware_skinning}{}\section{Ogre\+:\+:R\+T\+Shader\+:\+:Hardware\+Skinning Class Reference}
\label{class_ogre_1_1_r_t_shader_1_1_hardware_skinning}\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}


Implement a sub render state which performs hardware skinning.  




{\ttfamily \#include $<$Ogre\+Shader\+Ex\+Hardware\+Skinning.\+h$>$}



Inheritance diagram for Ogre\+:\+:R\+T\+Shader\+:\+:Hardware\+Skinning\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=229pt]{class_ogre_1_1_r_t_shader_1_1_hardware_skinning__inherit__graph}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
struct \hyperlink{struct_ogre_1_1_r_t_shader_1_1_hardware_skinning_1_1_skinning_data}{Skinning\+Data}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a1e08469498f970bd5bbca97ebad06fdb}{Hardware\+Skinning} ()
\begin{DoxyCompactList}\small\item\em Class default constructor. \end{DoxyCompactList}\item 
void \hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_afbaed9f0f34a5e269c3a66e597b1bd7f}{\+\_\+set\+Creator} (const \hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_factory}{Hardware\+Skinning\+Factory} $\ast$p\+Creator)
\begin{DoxyCompactList}\small\item\em Set the factory which created this sub render state. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a21c57fdf67524a8abe49c2cd499f7a87}{copy\+From} (const \hyperlink{class_ogre_1_1_r_t_shader_1_1_sub_render_state}{Sub\+Render\+State} \&rhs)
\item 
virtual bool \hyperlink{class_ogre_1_1_r_t_shader_1_1_sub_render_state_a4b43c261946926ebbc6456deccc6697a}{create\+Cpu\+Sub\+Programs} (\hyperlink{class_ogre_1_1_r_t_shader_1_1_program_set}{Program\+Set} $\ast$program\+Set)
\begin{DoxyCompactList}\small\item\em Create sub programs that represents this sub render state as part of a program set. \end{DoxyCompactList}\item 
\hyperlink{group___r_t_shader_gaecbe3817ee5b43f1962309c03d39da99}{Sub\+Render\+State\+Accessor\+Ptr} \hyperlink{class_ogre_1_1_r_t_shader_1_1_sub_render_state_aa73560a3f1b9117cb8b438867848c255}{get\+Accessor} ()
\begin{DoxyCompactList}\small\item\em Return the accessor object to this sub render state. \end{DoxyCompactList}\item 
\hyperlink{group___r_t_shader_gaecbe3817ee5b43f1962309c03d39da99}{Sub\+Render\+State\+Accessor\+Ptr} \hyperlink{class_ogre_1_1_r_t_shader_1_1_sub_render_state_a9d34ec312d5b8a627be41da5b57382eb}{get\+Accessor} () const
\begin{DoxyCompactList}\small\item\em Return the accessor object to this sub render state. \end{DoxyCompactList}\item 
\hyperlink{namespace_ogre_af851e71354d841df7138f9877c6f5931}{ushort} \hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_ac510a5ea44e2573409984d4e6c83e5db}{get\+Bone\+Count} ()
\begin{DoxyCompactList}\small\item\em Returns the number of bones in the model assigned to the material. \end{DoxyCompactList}\item 
virtual int \hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_ad014bc8d7d932405ebe8099c2231968a}{get\+Execution\+Order} () const
\item 
\hyperlink{namespace_ogre_1_1_r_t_shader_a8c100ce939d23573f062f3ad579998a1}{Skinning\+Type} \hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_ab6b1f8eae01343ed8c70084c4ad18d55}{get\+Skinning\+Type} ()
\begin{DoxyCompactList}\small\item\em Returns the current skinning type in use. \end{DoxyCompactList}\item 
virtual const \hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String} \& \hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a5482d3476401bfb267daa11298473e39}{get\+Type} () const
\item 
\hyperlink{namespace_ogre_af851e71354d841df7138f9877c6f5931}{ushort} \hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a138a4ec63a02e8d95f452ba17e7f2550}{get\+Weight\+Count} ()
\begin{DoxyCompactList}\small\item\em Returns the number of weights/bones affecting a vertex. \end{DoxyCompactList}\item 
bool \hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a47c2a973ec5815b73497f22d0b5d6785}{has\+Correct\+Antipodality\+Handling} ()
\begin{DoxyCompactList}\small\item\em Only applicable for dual quaternion skinning. \end{DoxyCompactList}\item 
bool \hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a299f8e0716a9af5c60fddb79cacddd19}{has\+Scaling\+Shearing\+Support} ()
\begin{DoxyCompactList}\small\item\em Only applicable for dual quaternion skinning. \end{DoxyCompactList}\item 
virtual bool \hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_aaf555a29a0e6eea40510ca58ae15599d}{pre\+Add\+To\+Render\+State} (const \hyperlink{class_ogre_1_1_r_t_shader_1_1_render_state}{Render\+State} $\ast$render\+State, \hyperlink{class_ogre_1_1_pass}{Pass} $\ast$src\+Pass, \hyperlink{class_ogre_1_1_pass}{Pass} $\ast$dst\+Pass)
\item 
void \hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a7c331680f4f37b9c1c8ebdc2f9eb48cc}{set\+Hardware\+Skinning\+Param} (\hyperlink{namespace_ogre_af851e71354d841df7138f9877c6f5931}{ushort} bone\+Count, \hyperlink{namespace_ogre_af851e71354d841df7138f9877c6f5931}{ushort} weight\+Count, \hyperlink{namespace_ogre_1_1_r_t_shader_a8c100ce939d23573f062f3ad579998a1}{Skinning\+Type} skinning\+Type=\hyperlink{namespace_ogre_1_1_r_t_shader_a8c100ce939d23573f062f3ad579998a1ab979c94e41c61d62d15f4771c5202e3c}{S\+T\+\_\+\+L\+I\+N\+E\+AR}, bool correct\+Antipodality\+Handling=false, bool scaling\+Shearing\+Support=false)
\begin{DoxyCompactList}\small\item\em Set the hardware skinning parameters. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_r_t_shader_1_1_sub_render_state_a4c2acbc15e44c3fe42868abce1116ec2}{update\+Gpu\+Programs\+Params} (\hyperlink{class_ogre_1_1_renderable}{Renderable} $\ast$rend, \hyperlink{class_ogre_1_1_pass}{Pass} $\ast$pass, const \hyperlink{class_ogre_1_1_auto_param_data_source}{Auto\+Param\+Data\+Source} $\ast$source, const \hyperlink{group___general_gaab30ef14aae93306a6044cb38d835f0c}{Light\+List} $\ast$p\+Light\+List)
\begin{DoxyCompactList}\small\item\em Update G\+PU programs parameters before a rendering operation occurs. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Public Attributes}
\begin{DoxyCompactItemize}
\item 
static \hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String} \hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a034e6f97519173fa13a4c38090184fde}{Type}
\end{DoxyCompactItemize}


\subsection{Detailed Description}
Implement a sub render state which performs hardware skinning. 

Meaning, this sub render states adds calculations which multiply the points and normals by their assigned bone matricies. 

\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a1e08469498f970bd5bbca97ebad06fdb}\label{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a1e08469498f970bd5bbca97ebad06fdb}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!Hardware\+Skinning@{Hardware\+Skinning}}
\index{Hardware\+Skinning@{Hardware\+Skinning}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{Hardware\+Skinning()}{HardwareSkinning()}}
{\footnotesize\ttfamily Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning\+::\+Hardware\+Skinning (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Class default constructor. 



\subsection{Member Function Documentation}
\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a5482d3476401bfb267daa11298473e39}\label{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a5482d3476401bfb267daa11298473e39}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!get\+Type@{get\+Type}}
\index{get\+Type@{get\+Type}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{get\+Type()}{getType()}}
{\footnotesize\ttfamily virtual const \hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String}\& Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning\+::get\+Type (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

\begin{DoxySeeAlso}{See also}
\hyperlink{class_ogre_1_1_r_t_shader_1_1_sub_render_state_ae91b7b8f76848d67652b6e5832a27a49}{Sub\+Render\+State\+::get\+Type}. 
\end{DoxySeeAlso}


Implements \hyperlink{class_ogre_1_1_r_t_shader_1_1_sub_render_state_ae91b7b8f76848d67652b6e5832a27a49}{Ogre\+::\+R\+T\+Shader\+::\+Sub\+Render\+State}.

\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_ad014bc8d7d932405ebe8099c2231968a}\label{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_ad014bc8d7d932405ebe8099c2231968a}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!get\+Execution\+Order@{get\+Execution\+Order}}
\index{get\+Execution\+Order@{get\+Execution\+Order}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{get\+Execution\+Order()}{getExecutionOrder()}}
{\footnotesize\ttfamily virtual int Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning\+::get\+Execution\+Order (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [virtual]}}

\begin{DoxySeeAlso}{See also}
\hyperlink{class_ogre_1_1_r_t_shader_1_1_sub_render_state_ae91b7b8f76848d67652b6e5832a27a49}{Sub\+Render\+State\+::get\+Type}. 
\end{DoxySeeAlso}


Implements \hyperlink{class_ogre_1_1_r_t_shader_1_1_sub_render_state_acb48c34ee231f0220f68c967fb32f1e5}{Ogre\+::\+R\+T\+Shader\+::\+Sub\+Render\+State}.

\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a21c57fdf67524a8abe49c2cd499f7a87}\label{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a21c57fdf67524a8abe49c2cd499f7a87}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!copy\+From@{copy\+From}}
\index{copy\+From@{copy\+From}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{copy\+From()}{copyFrom()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning\+::copy\+From (\begin{DoxyParamCaption}\item[{const \hyperlink{class_ogre_1_1_r_t_shader_1_1_sub_render_state}{Sub\+Render\+State} \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

\begin{DoxySeeAlso}{See also}
\hyperlink{class_ogre_1_1_r_t_shader_1_1_sub_render_state_a5dfe9f03413e0fe99ea2640f06c1f13c}{Sub\+Render\+State\+::copy\+From}. 
\end{DoxySeeAlso}


Implements \hyperlink{class_ogre_1_1_r_t_shader_1_1_sub_render_state_a5dfe9f03413e0fe99ea2640f06c1f13c}{Ogre\+::\+R\+T\+Shader\+::\+Sub\+Render\+State}.

\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a7c331680f4f37b9c1c8ebdc2f9eb48cc}\label{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a7c331680f4f37b9c1c8ebdc2f9eb48cc}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!set\+Hardware\+Skinning\+Param@{set\+Hardware\+Skinning\+Param}}
\index{set\+Hardware\+Skinning\+Param@{set\+Hardware\+Skinning\+Param}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{set\+Hardware\+Skinning\+Param()}{setHardwareSkinningParam()}}
{\footnotesize\ttfamily void Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning\+::set\+Hardware\+Skinning\+Param (\begin{DoxyParamCaption}\item[{\hyperlink{namespace_ogre_af851e71354d841df7138f9877c6f5931}{ushort}}]{bone\+Count,  }\item[{\hyperlink{namespace_ogre_af851e71354d841df7138f9877c6f5931}{ushort}}]{weight\+Count,  }\item[{\hyperlink{namespace_ogre_1_1_r_t_shader_a8c100ce939d23573f062f3ad579998a1}{Skinning\+Type}}]{skinning\+Type = {\ttfamily \hyperlink{namespace_ogre_1_1_r_t_shader_a8c100ce939d23573f062f3ad579998a1ab979c94e41c61d62d15f4771c5202e3c}{S\+T\+\_\+\+L\+I\+N\+E\+AR}},  }\item[{bool}]{correct\+Antipodality\+Handling = {\ttfamily false},  }\item[{bool}]{scaling\+Shearing\+Support = {\ttfamily false} }\end{DoxyParamCaption})}



Set the hardware skinning parameters. 


\begin{DoxyParams}{Parameters}
{\em bone\+Count} & The maximum number of bones in the model this material is assigned to. Note that this parameter can be higher but not lower than the actual number of bones. \\
\hline
{\em weight\+Count} & The maximum number of weights/bones affecting a vertex. \\
\hline
{\em skinning\+Type} & The type of skinning desired. \\
\hline
{\em correct\+Antipodality\+Handling} & If correct antipodality handling should be utilized (Only applicable for dual quaternion skinning). \\
\hline
{\em scaling\+Shearing\+Support} & If scaling and shearing support should be enabled (Only applicable for dual quaternion skinning). \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_ac510a5ea44e2573409984d4e6c83e5db}\label{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_ac510a5ea44e2573409984d4e6c83e5db}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!get\+Bone\+Count@{get\+Bone\+Count}}
\index{get\+Bone\+Count@{get\+Bone\+Count}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{get\+Bone\+Count()}{getBoneCount()}}
{\footnotesize\ttfamily \hyperlink{namespace_ogre_af851e71354d841df7138f9877c6f5931}{ushort} Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning\+::get\+Bone\+Count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Returns the number of bones in the model assigned to the material. 

\begin{DoxySeeAlso}{See also}
\hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a7c331680f4f37b9c1c8ebdc2f9eb48cc}{set\+Hardware\+Skinning\+Param()} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a138a4ec63a02e8d95f452ba17e7f2550}\label{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a138a4ec63a02e8d95f452ba17e7f2550}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!get\+Weight\+Count@{get\+Weight\+Count}}
\index{get\+Weight\+Count@{get\+Weight\+Count}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{get\+Weight\+Count()}{getWeightCount()}}
{\footnotesize\ttfamily \hyperlink{namespace_ogre_af851e71354d841df7138f9877c6f5931}{ushort} Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning\+::get\+Weight\+Count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Returns the number of weights/bones affecting a vertex. 

\begin{DoxySeeAlso}{See also}
\hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a7c331680f4f37b9c1c8ebdc2f9eb48cc}{set\+Hardware\+Skinning\+Param()} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_ab6b1f8eae01343ed8c70084c4ad18d55}\label{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_ab6b1f8eae01343ed8c70084c4ad18d55}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!get\+Skinning\+Type@{get\+Skinning\+Type}}
\index{get\+Skinning\+Type@{get\+Skinning\+Type}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{get\+Skinning\+Type()}{getSkinningType()}}
{\footnotesize\ttfamily \hyperlink{namespace_ogre_1_1_r_t_shader_a8c100ce939d23573f062f3ad579998a1}{Skinning\+Type} Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning\+::get\+Skinning\+Type (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Returns the current skinning type in use. 

\begin{DoxySeeAlso}{See also}
\hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a7c331680f4f37b9c1c8ebdc2f9eb48cc}{set\+Hardware\+Skinning\+Param()} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a47c2a973ec5815b73497f22d0b5d6785}\label{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a47c2a973ec5815b73497f22d0b5d6785}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!has\+Correct\+Antipodality\+Handling@{has\+Correct\+Antipodality\+Handling}}
\index{has\+Correct\+Antipodality\+Handling@{has\+Correct\+Antipodality\+Handling}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{has\+Correct\+Antipodality\+Handling()}{hasCorrectAntipodalityHandling()}}
{\footnotesize\ttfamily bool Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning\+::has\+Correct\+Antipodality\+Handling (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Only applicable for dual quaternion skinning. 

\begin{DoxySeeAlso}{See also}
\hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a7c331680f4f37b9c1c8ebdc2f9eb48cc}{set\+Hardware\+Skinning\+Param()} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a299f8e0716a9af5c60fddb79cacddd19}\label{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a299f8e0716a9af5c60fddb79cacddd19}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!has\+Scaling\+Shearing\+Support@{has\+Scaling\+Shearing\+Support}}
\index{has\+Scaling\+Shearing\+Support@{has\+Scaling\+Shearing\+Support}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{has\+Scaling\+Shearing\+Support()}{hasScalingShearingSupport()}}
{\footnotesize\ttfamily bool Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning\+::has\+Scaling\+Shearing\+Support (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Only applicable for dual quaternion skinning. 

\begin{DoxySeeAlso}{See also}
\hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a7c331680f4f37b9c1c8ebdc2f9eb48cc}{set\+Hardware\+Skinning\+Param()} 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_aaf555a29a0e6eea40510ca58ae15599d}\label{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_aaf555a29a0e6eea40510ca58ae15599d}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!pre\+Add\+To\+Render\+State@{pre\+Add\+To\+Render\+State}}
\index{pre\+Add\+To\+Render\+State@{pre\+Add\+To\+Render\+State}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{pre\+Add\+To\+Render\+State()}{preAddToRenderState()}}
{\footnotesize\ttfamily virtual bool Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning\+::pre\+Add\+To\+Render\+State (\begin{DoxyParamCaption}\item[{const \hyperlink{class_ogre_1_1_r_t_shader_1_1_render_state}{Render\+State} $\ast$}]{render\+State,  }\item[{\hyperlink{class_ogre_1_1_pass}{Pass} $\ast$}]{src\+Pass,  }\item[{\hyperlink{class_ogre_1_1_pass}{Pass} $\ast$}]{dst\+Pass }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}

\begin{DoxySeeAlso}{See also}
\hyperlink{class_ogre_1_1_r_t_shader_1_1_sub_render_state_afd08043cfad43a1ae470c3c1be341ba1}{Sub\+Render\+State\+::pre\+Add\+To\+Render\+State}. 
\end{DoxySeeAlso}


Reimplemented from \hyperlink{class_ogre_1_1_r_t_shader_1_1_sub_render_state_afd08043cfad43a1ae470c3c1be341ba1}{Ogre\+::\+R\+T\+Shader\+::\+Sub\+Render\+State}.

\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_afbaed9f0f34a5e269c3a66e597b1bd7f}\label{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_afbaed9f0f34a5e269c3a66e597b1bd7f}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!\+\_\+set\+Creator@{\+\_\+set\+Creator}}
\index{\+\_\+set\+Creator@{\+\_\+set\+Creator}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{\+\_\+set\+Creator()}{\_setCreator()}}
{\footnotesize\ttfamily void Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning\+::\+\_\+set\+Creator (\begin{DoxyParamCaption}\item[{const \hyperlink{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_factory}{Hardware\+Skinning\+Factory} $\ast$}]{p\+Creator }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Set the factory which created this sub render state. 

\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_sub_render_state_a4b43c261946926ebbc6456deccc6697a}\label{class_ogre_1_1_r_t_shader_1_1_sub_render_state_a4b43c261946926ebbc6456deccc6697a}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!create\+Cpu\+Sub\+Programs@{create\+Cpu\+Sub\+Programs}}
\index{create\+Cpu\+Sub\+Programs@{create\+Cpu\+Sub\+Programs}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{create\+Cpu\+Sub\+Programs()}{createCpuSubPrograms()}}
{\footnotesize\ttfamily virtual bool Ogre\+::\+R\+T\+Shader\+::\+Sub\+Render\+State\+::create\+Cpu\+Sub\+Programs (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_r_t_shader_1_1_program_set}{Program\+Set} $\ast$}]{program\+Set }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}, {\ttfamily [inherited]}}



Create sub programs that represents this sub render state as part of a program set. 

The given program set contains C\+PU programs that represents a vertex shader and pixel shader. One should use these program class A\+PI to create a representation of the sub state he wished to implement. 
\begin{DoxyParams}{Parameters}
{\em program\+Set} & container class of C\+PU and G\+PU programs that this sub state will affect on. \\
\hline
\end{DoxyParams}


Reimplemented in \hyperlink{class_ogre_1_1_r_t_shader_1_1_f_f_p_transform_a92be790cb34c6f56f18cb75e428a0e54}{Ogre\+::\+R\+T\+Shader\+::\+F\+F\+P\+Transform}.

\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_sub_render_state_a4c2acbc15e44c3fe42868abce1116ec2}\label{class_ogre_1_1_r_t_shader_1_1_sub_render_state_a4c2acbc15e44c3fe42868abce1116ec2}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!update\+Gpu\+Programs\+Params@{update\+Gpu\+Programs\+Params}}
\index{update\+Gpu\+Programs\+Params@{update\+Gpu\+Programs\+Params}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{update\+Gpu\+Programs\+Params()}{updateGpuProgramsParams()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+R\+T\+Shader\+::\+Sub\+Render\+State\+::update\+Gpu\+Programs\+Params (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_renderable}{Renderable} $\ast$}]{rend,  }\item[{\hyperlink{class_ogre_1_1_pass}{Pass} $\ast$}]{pass,  }\item[{const \hyperlink{class_ogre_1_1_auto_param_data_source}{Auto\+Param\+Data\+Source} $\ast$}]{source,  }\item[{const \hyperlink{group___general_gaab30ef14aae93306a6044cb38d835f0c}{Light\+List} $\ast$}]{p\+Light\+List }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}, {\ttfamily [inherited]}}



Update G\+PU programs parameters before a rendering operation occurs. 

This method is called in the context of Scene\+Manager\+::render\+Single object via the \hyperlink{class_ogre_1_1_render_object_listener}{Render\+Object\+Listener} interface and lets this sub render state instance opportunity to update custom G\+PU program parameters before the rendering action occurs. \begin{DoxySeeAlso}{See also}
\hyperlink{class_ogre_1_1_render_object_listener_a99b1b17e89efbbce74756925a4acad38}{Render\+Object\+Listener\+::notify\+Render\+Single\+Object}. 
\end{DoxySeeAlso}

\begin{DoxyParams}{Parameters}
{\em rend} & The renderable that is about to be rendered. \\
\hline
{\em pass} & The pass that used for this rendering. \\
\hline
{\em source} & The auto parameter source. \\
\hline
{\em p\+Light\+List} & The light list used in the current rendering context. \\
\hline
\end{DoxyParams}


Reimplemented in \hyperlink{class_ogre_1_1_r_t_shader_1_1_triplanar_texturing_a33a8df75aa637178e60fc1fcac452ef2}{Ogre\+::\+R\+T\+Shader\+::\+Triplanar\+Texturing}, \hyperlink{class_ogre_1_1_r_t_shader_1_1_texture_atlas_sampler_afd9a5abfd8c90dda51b7c6b0721155e4}{Ogre\+::\+R\+T\+Shader\+::\+Texture\+Atlas\+Sampler}, \hyperlink{class_ogre_1_1_r_t_shader_1_1_f_f_p_alpha_test_a05aa9a2678f41393dcf36c8ac41d0d2d}{Ogre\+::\+R\+T\+Shader\+::\+F\+F\+P\+Alpha\+Test}, \hyperlink{class_ogre_1_1_r_t_shader_1_1_per_pixel_lighting_abe2eddda64829432cbef5b020f7b01a5}{Ogre\+::\+R\+T\+Shader\+::\+Per\+Pixel\+Lighting}, \hyperlink{class_ogre_1_1_r_t_shader_1_1_f_f_p_fog_a2550c49f486386c8915a08e02b90af24}{Ogre\+::\+R\+T\+Shader\+::\+F\+F\+P\+Fog}, \hyperlink{class_ogre_1_1_r_t_shader_1_1_integrated_p_s_s_m3_a32957ed09ad6e7c442f55e6604505ef2}{Ogre\+::\+R\+T\+Shader\+::\+Integrated\+P\+S\+S\+M3}, \hyperlink{class_ogre_1_1_r_t_shader_1_1_f_f_p_texturing_a07596385b7c33e6ea29bc54f7e664d45}{Ogre\+::\+R\+T\+Shader\+::\+F\+F\+P\+Texturing}, \hyperlink{class_ogre_1_1_r_t_shader_1_1_f_f_p_lighting_a0e670dbfea49dc92dde893ca175d722e}{Ogre\+::\+R\+T\+Shader\+::\+F\+F\+P\+Lighting}, and \hyperlink{class_ogre_1_1_r_t_shader_1_1_normal_map_lighting_a12b0e1c74da86e9e2ba63bd409240178}{Ogre\+::\+R\+T\+Shader\+::\+Normal\+Map\+Lighting}.

\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_sub_render_state_aa73560a3f1b9117cb8b438867848c255}\label{class_ogre_1_1_r_t_shader_1_1_sub_render_state_aa73560a3f1b9117cb8b438867848c255}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!get\+Accessor@{get\+Accessor}}
\index{get\+Accessor@{get\+Accessor}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{get\+Accessor()}{getAccessor()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily \hyperlink{group___r_t_shader_gaecbe3817ee5b43f1962309c03d39da99}{Sub\+Render\+State\+Accessor\+Ptr} Ogre\+::\+R\+T\+Shader\+::\+Sub\+Render\+State\+::get\+Accessor (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}



Return the accessor object to this sub render state. 

\begin{DoxySeeAlso}{See also}
\hyperlink{class_ogre_1_1_r_t_shader_1_1_sub_render_state_accessor}{Sub\+Render\+State\+Accessor}. 
\end{DoxySeeAlso}
\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_sub_render_state_a9d34ec312d5b8a627be41da5b57382eb}\label{class_ogre_1_1_r_t_shader_1_1_sub_render_state_a9d34ec312d5b8a627be41da5b57382eb}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!get\+Accessor@{get\+Accessor}}
\index{get\+Accessor@{get\+Accessor}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{get\+Accessor()}{getAccessor()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily \hyperlink{group___r_t_shader_gaecbe3817ee5b43f1962309c03d39da99}{Sub\+Render\+State\+Accessor\+Ptr} Ogre\+::\+R\+T\+Shader\+::\+Sub\+Render\+State\+::get\+Accessor (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inherited]}}



Return the accessor object to this sub render state. 

\begin{DoxySeeAlso}{See also}
\hyperlink{class_ogre_1_1_r_t_shader_1_1_sub_render_state_accessor}{Sub\+Render\+State\+Accessor}. 
\end{DoxySeeAlso}


\subsection{Member Data Documentation}
\mbox{\Hypertarget{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a034e6f97519173fa13a4c38090184fde}\label{class_ogre_1_1_r_t_shader_1_1_hardware_skinning_a034e6f97519173fa13a4c38090184fde}} 
\index{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}!Type@{Type}}
\index{Type@{Type}!Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning@{Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning}}
\subsubsection{\texorpdfstring{Type}{Type}}
{\footnotesize\ttfamily \hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String} Ogre\+::\+R\+T\+Shader\+::\+Hardware\+Skinning\+::\+Type\hspace{0.3cm}{\ttfamily [static]}}



The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
\hyperlink{_ogre_shader_ex_hardware_skinning_8h}{Ogre\+Shader\+Ex\+Hardware\+Skinning.\+h}\end{DoxyCompactItemize}
