\hypertarget{class_ogre_1_1_g_l_s_l_e_s_program_common}{}\section{Ogre\+:\+:G\+L\+S\+L\+E\+S\+Program\+Common Class Reference}
\label{class_ogre_1_1_g_l_s_l_e_s_program_common}\index{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}}


C++ encapsulation of \hyperlink{namespace_ogre_1_1_g_l_s_l}{G\+L\+SL} ES Program Object.  




{\ttfamily \#include $<$Ogre\+G\+L\+S\+L\+E\+S\+Program\+Common.\+h$>$}



Inheritance diagram for Ogre\+:\+:G\+L\+S\+L\+E\+S\+Program\+Common\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{class_ogre_1_1_g_l_s_l_e_s_program_common__inherit__graph}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual void \hyperlink{class_ogre_1_1_g_l_s_l_program_common_a3ac7e0d04bf340ef7786be70caf9c342}{activate} (void)=0
\begin{DoxyCompactList}\small\item\em Makes a program object active by making sure it is linked and then putting it in use. \end{DoxyCompactList}\item 
void \hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_common_aa4679be63f34e089c4230741d4e945a8}{bind\+Fixed\+Attributes} (G\+Luint program)
\item 
void \hyperlink{class_ogre_1_1_g_l_s_l_program_common_a297cb6dcdee44b084dc5b819c5e9a9e1}{extract\+Layout\+Qualifiers} (void)
\item 
\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program}{G\+L\+S\+L\+E\+S\+Program} $\ast$ \hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_common_a09b598bc442c10adf89494084d04a005}{get\+Fragment\+Program} (void) const
\item 
\hyperlink{namespace_ogre_ab6e842a18caf062ed73a5d3badd0dd4c}{uint} \hyperlink{class_ogre_1_1_g_l_s_l_program_common_abc474b562f98c6bcee650d97a0fa2fa0}{get\+G\+L\+Program\+Handle} (void) const
\begin{DoxyCompactList}\small\item\em Get the GL Handle for the program object. \end{DoxyCompactList}\item 
\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program}{G\+L\+S\+L\+E\+S\+Program} $\ast$ \hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_common_a42c73f5b41f0e147f4fea50cf3b6b0e6}{get\+Vertex\+Program} (void) const
\item 
bool \hyperlink{class_ogre_1_1_g_l_s_l_program_common_a737c91384b4d03c6652e74695044666d}{is\+Skeletal\+Animation\+Included} (void) const
\begin{DoxyCompactList}\small\item\em Returns whether the linked program includes the required instructions to perform skeletal animation. \end{DoxyCompactList}\item 
bool \hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_common_ac6f2b14af93b14091361541dc02d9f36}{is\+Using\+Shader} (\hyperlink{class_ogre_1_1_g_l_s_l_shader_common}{G\+L\+S\+L\+Shader\+Common} $\ast$shader) const
\begin{DoxyCompactList}\small\item\em query if the program is using the given shader \end{DoxyCompactList}\item 
void \hyperlink{class_ogre_1_1_g_l_s_l_program_common_a6ad50d45b574a406ed97e86ff4c1ea52}{set\+Skeletal\+Animation\+Included} (bool included)
\begin{DoxyCompactList}\small\item\em Sets whether the linked program includes the required instructions to perform skeletal animation. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_g_l_s_l_program_common_a298d93c808f368bf5993219b3e1a4f2e}{update\+Pass\+Iteration\+Uniforms} (\hyperlink{namespace_ogre_aebab7cecf3f3ae81a1fbfa08ab36f2b5}{Gpu\+Program\+Parameters\+Shared\+Ptr} params)=0
\begin{DoxyCompactList}\small\item\em Updates program object uniforms using data from pass iteration \hyperlink{class_ogre_1_1_gpu_program_parameters}{Gpu\+Program\+Parameters}. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_g_l_s_l_program_common_ad1fdd44ef114208a907b30a1661bf05c}{update\+Uniform\+Blocks} (\hyperlink{namespace_ogre_aebab7cecf3f3ae81a1fbfa08ab36f2b5}{Gpu\+Program\+Parameters\+Shared\+Ptr} params, \hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16} mask, \hyperlink{group___resources_gad08e89fa63e81d061ea9e2f37664976e}{Gpu\+Program\+Type} from\+Prog\+Type)=0
\begin{DoxyCompactList}\small\item\em Updates program object uniform blocks using data from \hyperlink{class_ogre_1_1_gpu_program_parameters}{Gpu\+Program\+Parameters}. \end{DoxyCompactList}\item 
virtual void \hyperlink{class_ogre_1_1_g_l_s_l_program_common_aa76113d78d9b1f2a879b4a1648e73fdd}{update\+Uniforms} (\hyperlink{namespace_ogre_aebab7cecf3f3ae81a1fbfa08ab36f2b5}{Gpu\+Program\+Parameters\+Shared\+Ptr} params, \hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16} mask, \hyperlink{group___resources_gad08e89fa63e81d061ea9e2f37664976e}{Gpu\+Program\+Type} from\+Prog\+Type)=0
\begin{DoxyCompactList}\small\item\em Updates program object uniforms using data from \hyperlink{class_ogre_1_1_gpu_program_parameters}{Gpu\+Program\+Parameters}. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static \hyperlink{namespace_ogre_a1c37a43c04753c9ae0c17108c9e6c9d2}{int32} \hyperlink{class_ogre_1_1_g_l_s_l_program_common_a6c288d18dad4c01e7a60e3ab5fca3ad2}{get\+Fixed\+Attribute\+Index} (\hyperlink{group___render_system_ga0a62b3f2ede8992ff365bb013a8bc00d}{Vertex\+Element\+Semantic} semantic, \hyperlink{namespace_ogre_ab6e842a18caf062ed73a5d3badd0dd4c}{uint} index)
\begin{DoxyCompactList}\small\item\em Get the fixed attribute bindings normally used by GL for a semantic. \end{DoxyCompactList}\item 
static void \hyperlink{class_ogre_1_1_g_l_s_l_program_common_acbbf4e225d7372d8980ef6b9e6cd0efa}{use\+Tight\+Attribute\+Layout} ()
\begin{DoxyCompactList}\small\item\em use alternate vertex attribute layout using only 8 vertex attributes \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
C++ encapsulation of \hyperlink{namespace_ogre_1_1_g_l_s_l}{G\+L\+SL} ES Program Object. 



\subsection{Member Function Documentation}
\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_e_s_program_common_aa4679be63f34e089c4230741d4e945a8}\label{class_ogre_1_1_g_l_s_l_e_s_program_common_aa4679be63f34e089c4230741d4e945a8}} 
\index{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}!bind\+Fixed\+Attributes@{bind\+Fixed\+Attributes}}
\index{bind\+Fixed\+Attributes@{bind\+Fixed\+Attributes}!Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}}
\subsubsection{\texorpdfstring{bind\+Fixed\+Attributes()}{bindFixedAttributes()}}
{\footnotesize\ttfamily void Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common\+::bind\+Fixed\+Attributes (\begin{DoxyParamCaption}\item[{G\+Luint}]{program }\end{DoxyParamCaption})}

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_e_s_program_common_a42c73f5b41f0e147f4fea50cf3b6b0e6}\label{class_ogre_1_1_g_l_s_l_e_s_program_common_a42c73f5b41f0e147f4fea50cf3b6b0e6}} 
\index{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}!get\+Vertex\+Program@{get\+Vertex\+Program}}
\index{get\+Vertex\+Program@{get\+Vertex\+Program}!Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}}
\subsubsection{\texorpdfstring{get\+Vertex\+Program()}{getVertexProgram()}}
{\footnotesize\ttfamily \hyperlink{class_ogre_1_1_g_l_s_l_e_s_program}{G\+L\+S\+L\+E\+S\+Program}$\ast$ Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common\+::get\+Vertex\+Program (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_e_s_program_common_a09b598bc442c10adf89494084d04a005}\label{class_ogre_1_1_g_l_s_l_e_s_program_common_a09b598bc442c10adf89494084d04a005}} 
\index{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}!get\+Fragment\+Program@{get\+Fragment\+Program}}
\index{get\+Fragment\+Program@{get\+Fragment\+Program}!Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}}
\subsubsection{\texorpdfstring{get\+Fragment\+Program()}{getFragmentProgram()}}
{\footnotesize\ttfamily \hyperlink{class_ogre_1_1_g_l_s_l_e_s_program}{G\+L\+S\+L\+E\+S\+Program}$\ast$ Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common\+::get\+Fragment\+Program (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_e_s_program_common_ac6f2b14af93b14091361541dc02d9f36}\label{class_ogre_1_1_g_l_s_l_e_s_program_common_ac6f2b14af93b14091361541dc02d9f36}} 
\index{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}!is\+Using\+Shader@{is\+Using\+Shader}}
\index{is\+Using\+Shader@{is\+Using\+Shader}!Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}}
\subsubsection{\texorpdfstring{is\+Using\+Shader()}{isUsingShader()}}
{\footnotesize\ttfamily bool Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common\+::is\+Using\+Shader (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_g_l_s_l_shader_common}{G\+L\+S\+L\+Shader\+Common} $\ast$}]{shader }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}}



query if the program is using the given shader 



Implements \hyperlink{class_ogre_1_1_g_l_s_l_program_common_aae6e23936b090e8373dd8ba782ab6703}{Ogre\+::\+G\+L\+S\+L\+Program\+Common}.

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_program_common_a297cb6dcdee44b084dc5b819c5e9a9e1}\label{class_ogre_1_1_g_l_s_l_program_common_a297cb6dcdee44b084dc5b819c5e9a9e1}} 
\index{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}!extract\+Layout\+Qualifiers@{extract\+Layout\+Qualifiers}}
\index{extract\+Layout\+Qualifiers@{extract\+Layout\+Qualifiers}!Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}}
\subsubsection{\texorpdfstring{extract\+Layout\+Qualifiers()}{extractLayoutQualifiers()}}
{\footnotesize\ttfamily void Ogre\+::\+G\+L\+S\+L\+Program\+Common\+::extract\+Layout\+Qualifiers (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_program_common_a6ad50d45b574a406ed97e86ff4c1ea52}\label{class_ogre_1_1_g_l_s_l_program_common_a6ad50d45b574a406ed97e86ff4c1ea52}} 
\index{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}!set\+Skeletal\+Animation\+Included@{set\+Skeletal\+Animation\+Included}}
\index{set\+Skeletal\+Animation\+Included@{set\+Skeletal\+Animation\+Included}!Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}}
\subsubsection{\texorpdfstring{set\+Skeletal\+Animation\+Included()}{setSkeletalAnimationIncluded()}}
{\footnotesize\ttfamily void Ogre\+::\+G\+L\+S\+L\+Program\+Common\+::set\+Skeletal\+Animation\+Included (\begin{DoxyParamCaption}\item[{bool}]{included }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [inherited]}}



Sets whether the linked program includes the required instructions to perform skeletal animation. 

\begin{DoxyRemark}{Remarks}
If this is set to true, O\+G\+RE will not blend the geometry according to skeletal animation, it will expect the vertex program to do it. 
\end{DoxyRemark}
\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_program_common_a737c91384b4d03c6652e74695044666d}\label{class_ogre_1_1_g_l_s_l_program_common_a737c91384b4d03c6652e74695044666d}} 
\index{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}!is\+Skeletal\+Animation\+Included@{is\+Skeletal\+Animation\+Included}}
\index{is\+Skeletal\+Animation\+Included@{is\+Skeletal\+Animation\+Included}!Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}}
\subsubsection{\texorpdfstring{is\+Skeletal\+Animation\+Included()}{isSkeletalAnimationIncluded()}}
{\footnotesize\ttfamily bool Ogre\+::\+G\+L\+S\+L\+Program\+Common\+::is\+Skeletal\+Animation\+Included (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [inherited]}}



Returns whether the linked program includes the required instructions to perform skeletal animation. 

\begin{DoxyRemark}{Remarks}
If this returns true, O\+G\+RE will not blend the geometry according to skeletal animation, it will expect the vertex program to do it. 
\end{DoxyRemark}
\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_program_common_abc474b562f98c6bcee650d97a0fa2fa0}\label{class_ogre_1_1_g_l_s_l_program_common_abc474b562f98c6bcee650d97a0fa2fa0}} 
\index{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}!get\+G\+L\+Program\+Handle@{get\+G\+L\+Program\+Handle}}
\index{get\+G\+L\+Program\+Handle@{get\+G\+L\+Program\+Handle}!Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}}
\subsubsection{\texorpdfstring{get\+G\+L\+Program\+Handle()}{getGLProgramHandle()}}
{\footnotesize\ttfamily \hyperlink{namespace_ogre_ab6e842a18caf062ed73a5d3badd0dd4c}{uint} Ogre\+::\+G\+L\+S\+L\+Program\+Common\+::get\+G\+L\+Program\+Handle (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [inherited]}}



Get the GL Handle for the program object. 



References O\+G\+R\+E\+\_\+\+M\+A\+X\+\_\+\+T\+E\+X\+T\+U\+R\+E\+\_\+\+C\+O\+O\+R\+D\+\_\+\+S\+E\+TS, and Ogre\+::\+V\+E\+S\+\_\+\+C\+O\+U\+NT.

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_program_common_a3ac7e0d04bf340ef7786be70caf9c342}\label{class_ogre_1_1_g_l_s_l_program_common_a3ac7e0d04bf340ef7786be70caf9c342}} 
\index{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}!activate@{activate}}
\index{activate@{activate}!Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}}
\subsubsection{\texorpdfstring{activate()}{activate()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+G\+L\+S\+L\+Program\+Common\+::activate (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}, {\ttfamily [inherited]}}



Makes a program object active by making sure it is linked and then putting it in use. 



Implemented in \hyperlink{class_ogre_1_1_g_l_s_l_separable_program_aedab89a93c49cc2d88c4f564fcc9aa2b}{Ogre\+::\+G\+L\+S\+L\+Separable\+Program}, \hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_pipeline_aa2bbf63617d7c69b0d7bd23c1c64cc64}{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Pipeline}, \hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_a1794be351d8f5c5752b3baeeb89cadb4}{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program}, \hyperlink{class_ogre_1_1_g_l_s_l_monolithic_program_a39d6ede7c386222cfc16a31deb0a4126}{Ogre\+::\+G\+L\+S\+L\+Monolithic\+Program}, and \hyperlink{class_ogre_1_1_g_l_s_l_e_s_link_program_ad650041462fee908c6bda8cc8f4b9938}{Ogre\+::\+G\+L\+S\+L\+E\+S\+Link\+Program}.

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_program_common_aa76113d78d9b1f2a879b4a1648e73fdd}\label{class_ogre_1_1_g_l_s_l_program_common_aa76113d78d9b1f2a879b4a1648e73fdd}} 
\index{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}!update\+Uniforms@{update\+Uniforms}}
\index{update\+Uniforms@{update\+Uniforms}!Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}}
\subsubsection{\texorpdfstring{update\+Uniforms()}{updateUniforms()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+G\+L\+S\+L\+Program\+Common\+::update\+Uniforms (\begin{DoxyParamCaption}\item[{\hyperlink{namespace_ogre_aebab7cecf3f3ae81a1fbfa08ab36f2b5}{Gpu\+Program\+Parameters\+Shared\+Ptr}}]{params,  }\item[{\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16}}]{mask,  }\item[{\hyperlink{group___resources_gad08e89fa63e81d061ea9e2f37664976e}{Gpu\+Program\+Type}}]{from\+Prog\+Type }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}, {\ttfamily [inherited]}}



Updates program object uniforms using data from \hyperlink{class_ogre_1_1_gpu_program_parameters}{Gpu\+Program\+Parameters}. 

Normally called by \hyperlink{class_ogre_1_1_g_l_s_l_shader_a98c3899b9c510ce5ec479155c35a0647}{G\+L\+S\+L\+Shader\+::bind\+Parameters()} just before rendering occurs. 

Implemented in \hyperlink{class_ogre_1_1_g_l_s_l_separable_program_ae91bba55a10cf25319116f906ca09382}{Ogre\+::\+G\+L\+S\+L\+Separable\+Program}, \hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_aeab832b53d1471303e6d99e97fe3f4c5}{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program}, \hyperlink{class_ogre_1_1_g_l_s_l_monolithic_program_a41f26aa8518b54da2a5a9d1af59f6316}{Ogre\+::\+G\+L\+S\+L\+Monolithic\+Program}, \hyperlink{class_ogre_1_1_g_l_s_l_e_s_link_program_abc783f9eba105adf7d23221ee4ee7415}{Ogre\+::\+G\+L\+S\+L\+E\+S\+Link\+Program}, and \hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_pipeline_aea14577f15c1ef4d81921d0455983b43}{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Pipeline}.

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_program_common_ad1fdd44ef114208a907b30a1661bf05c}\label{class_ogre_1_1_g_l_s_l_program_common_ad1fdd44ef114208a907b30a1661bf05c}} 
\index{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}!update\+Uniform\+Blocks@{update\+Uniform\+Blocks}}
\index{update\+Uniform\+Blocks@{update\+Uniform\+Blocks}!Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}}
\subsubsection{\texorpdfstring{update\+Uniform\+Blocks()}{updateUniformBlocks()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+G\+L\+S\+L\+Program\+Common\+::update\+Uniform\+Blocks (\begin{DoxyParamCaption}\item[{\hyperlink{namespace_ogre_aebab7cecf3f3ae81a1fbfa08ab36f2b5}{Gpu\+Program\+Parameters\+Shared\+Ptr}}]{params,  }\item[{\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16}}]{mask,  }\item[{\hyperlink{group___resources_gad08e89fa63e81d061ea9e2f37664976e}{Gpu\+Program\+Type}}]{from\+Prog\+Type }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}, {\ttfamily [inherited]}}



Updates program object uniform blocks using data from \hyperlink{class_ogre_1_1_gpu_program_parameters}{Gpu\+Program\+Parameters}. 

Normally called by \hyperlink{class_ogre_1_1_g_l_s_l_shader_a98c3899b9c510ce5ec479155c35a0647}{G\+L\+S\+L\+Shader\+::bind\+Parameters()} just before rendering occurs. 

Implemented in \hyperlink{class_ogre_1_1_g_l_s_l_separable_program_ae7f066c71830c983bccc32c5fde34517}{Ogre\+::\+G\+L\+S\+L\+Separable\+Program}, \hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_a23b84c90b8f5b3768da90abd6c3524cd}{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program}, \hyperlink{class_ogre_1_1_g_l_s_l_monolithic_program_ad09756b38f600e85d3e7a4cc520a40a5}{Ogre\+::\+G\+L\+S\+L\+Monolithic\+Program}, \hyperlink{class_ogre_1_1_g_l_s_l_e_s_link_program_a4f0a43c8c20a906dde6ae6aa6cc35572}{Ogre\+::\+G\+L\+S\+L\+E\+S\+Link\+Program}, and \hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_pipeline_a9bccdad5d9eccbbda57fb9797072f1a2}{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Pipeline}.

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_program_common_a298d93c808f368bf5993219b3e1a4f2e}\label{class_ogre_1_1_g_l_s_l_program_common_a298d93c808f368bf5993219b3e1a4f2e}} 
\index{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}!update\+Pass\+Iteration\+Uniforms@{update\+Pass\+Iteration\+Uniforms}}
\index{update\+Pass\+Iteration\+Uniforms@{update\+Pass\+Iteration\+Uniforms}!Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}}
\subsubsection{\texorpdfstring{update\+Pass\+Iteration\+Uniforms()}{updatePassIterationUniforms()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+G\+L\+S\+L\+Program\+Common\+::update\+Pass\+Iteration\+Uniforms (\begin{DoxyParamCaption}\item[{\hyperlink{namespace_ogre_aebab7cecf3f3ae81a1fbfa08ab36f2b5}{Gpu\+Program\+Parameters\+Shared\+Ptr}}]{params }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}, {\ttfamily [inherited]}}



Updates program object uniforms using data from pass iteration \hyperlink{class_ogre_1_1_gpu_program_parameters}{Gpu\+Program\+Parameters}. 

Normally called by G\+L\+S\+L\+Shader\+::bind\+Multi\+Pass\+Parameters() just before multi pass rendering occurs. 

Implemented in \hyperlink{class_ogre_1_1_g_l_s_l_separable_program_a8150de952976e9b36793e2e99f0f5b64}{Ogre\+::\+G\+L\+S\+L\+Separable\+Program}, \hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_ad1e52761094dbbbb3c66d0779b3d044f}{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program}, \hyperlink{class_ogre_1_1_g_l_s_l_monolithic_program_ab8b968c5a64cb8281e913d84f0026028}{Ogre\+::\+G\+L\+S\+L\+Monolithic\+Program}, \hyperlink{class_ogre_1_1_g_l_s_l_e_s_link_program_aa3f26efbdc7d2c8d1062a418e8b2af25}{Ogre\+::\+G\+L\+S\+L\+E\+S\+Link\+Program}, and \hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_pipeline_aec8e2b4cc8d39950abeaec2a5187fd51}{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Pipeline}.

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_program_common_a6c288d18dad4c01e7a60e3ab5fca3ad2}\label{class_ogre_1_1_g_l_s_l_program_common_a6c288d18dad4c01e7a60e3ab5fca3ad2}} 
\index{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}!get\+Fixed\+Attribute\+Index@{get\+Fixed\+Attribute\+Index}}
\index{get\+Fixed\+Attribute\+Index@{get\+Fixed\+Attribute\+Index}!Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}}
\subsubsection{\texorpdfstring{get\+Fixed\+Attribute\+Index()}{getFixedAttributeIndex()}}
{\footnotesize\ttfamily static \hyperlink{namespace_ogre_a1c37a43c04753c9ae0c17108c9e6c9d2}{int32} Ogre\+::\+G\+L\+S\+L\+Program\+Common\+::get\+Fixed\+Attribute\+Index (\begin{DoxyParamCaption}\item[{\hyperlink{group___render_system_ga0a62b3f2ede8992ff365bb013a8bc00d}{Vertex\+Element\+Semantic}}]{semantic,  }\item[{\hyperlink{namespace_ogre_ab6e842a18caf062ed73a5d3badd0dd4c}{uint}}]{index }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [inherited]}}



Get the fixed attribute bindings normally used by GL for a semantic. 

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_program_common_acbbf4e225d7372d8980ef6b9e6cd0efa}\label{class_ogre_1_1_g_l_s_l_program_common_acbbf4e225d7372d8980ef6b9e6cd0efa}} 
\index{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}!use\+Tight\+Attribute\+Layout@{use\+Tight\+Attribute\+Layout}}
\index{use\+Tight\+Attribute\+Layout@{use\+Tight\+Attribute\+Layout}!Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common@{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common}}
\subsubsection{\texorpdfstring{use\+Tight\+Attribute\+Layout()}{useTightAttributeLayout()}}
{\footnotesize\ttfamily static void Ogre\+::\+G\+L\+S\+L\+Program\+Common\+::use\+Tight\+Attribute\+Layout (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}, {\ttfamily [inherited]}}



use alternate vertex attribute layout using only 8 vertex attributes 

For \char`\"{}\+Vivante G\+C1000\char`\"{} and \char`\"{}\+Video\+Core I\+V\char`\"{} (notably in Raspberry Pi) on G\+L\+E\+S2 

The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
\hyperlink{_ogre_g_l_s_l_e_s_program_common_8h}{Ogre\+G\+L\+S\+L\+E\+S\+Program\+Common.\+h}\end{DoxyCompactItemize}
