\hypertarget{class_ogre_1_1_g_l_s_l_e_s_program_common}{}\doxysection{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::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}}


C++ encapsulation of \mbox{\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}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual void \mbox{\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 \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_common_aa4679be63f34e089c4230741d4e945a8}{bind\+Fixed\+Attributes}} (G\+Luint program)
\item 
void \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_program_common_a297cb6dcdee44b084dc5b819c5e9a9e1}{extract\+Layout\+Qualifiers}} (void)
\item 
\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program}{G\+L\+S\+L\+E\+S\+Program}} $\ast$ \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_common_a09b598bc442c10adf89494084d04a005}{get\+Fragment\+Program}} (void) const
\item 
\mbox{\hyperlink{namespace_ogre_ab6e842a18caf062ed73a5d3badd0dd4c}{uint}} \mbox{\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 
\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program}{G\+L\+S\+L\+E\+S\+Program}} $\ast$ \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_common_a42c73f5b41f0e147f4fea50cf3b6b0e6}{get\+Vertex\+Program}} (void) const
\item 
bool \mbox{\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 \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_common_ac6f2b14af93b14091361541dc02d9f36}{is\+Using\+Shader}} (\mbox{\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 \mbox{\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 
void \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_program_common_ac66f9ef286cd589cfcef422988e51717}{update\+Uniform\+Blocks}} ()
\begin{DoxyCompactList}\small\item\em Updates program object uniform blocks using data from \mbox{\hyperlink{class_ogre_1_1_gpu_program_parameters}{Gpu\+Program\+Parameters}}. \end{DoxyCompactList}\item 
virtual void \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_program_common_aa76113d78d9b1f2a879b4a1648e73fdd}{update\+Uniforms}} (\mbox{\hyperlink{namespace_ogre_aff0eec6634048fd4d65b785264243e6c}{Gpu\+Program\+Parameters\+Shared\+Ptr}} params, \mbox{\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16}} mask, \mbox{\hyperlink{group___resources_gad08e89fa63e81d061ea9e2f37664976e}{Gpu\+Program\+Type}} from\+Prog\+Type)=0
\begin{DoxyCompactList}\small\item\em Updates program object uniforms using data from \mbox{\hyperlink{class_ogre_1_1_gpu_program_parameters}{Gpu\+Program\+Parameters}}. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static \mbox{\hyperlink{namespace_ogre_a1c37a43c04753c9ae0c17108c9e6c9d2}{int32}} \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_program_common_a6c288d18dad4c01e7a60e3ab5fca3ad2}{get\+Fixed\+Attribute\+Index}} (\mbox{\hyperlink{group___render_system_ga0a62b3f2ede8992ff365bb013a8bc00d}{Vertex\+Element\+Semantic}} semantic, \mbox{\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 \mbox{\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}


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



\doxysubsection{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::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}!bindFixedAttributes@{bindFixedAttributes}}
\index{bindFixedAttributes@{bindFixedAttributes}!Ogre::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}}
\doxysubsubsection{\texorpdfstring{bindFixedAttributes()}{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::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}!getVertexProgram@{getVertexProgram}}
\index{getVertexProgram@{getVertexProgram}!Ogre::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}}
\doxysubsubsection{\texorpdfstring{getVertexProgram()}{getVertexProgram()}}
{\footnotesize\ttfamily \mbox{\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::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}!getFragmentProgram@{getFragmentProgram}}
\index{getFragmentProgram@{getFragmentProgram}!Ogre::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}}
\doxysubsubsection{\texorpdfstring{getFragmentProgram()}{getFragmentProgram()}}
{\footnotesize\ttfamily \mbox{\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::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}!isUsingShader@{isUsingShader}}
\index{isUsingShader@{isUsingShader}!Ogre::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}}
\doxysubsubsection{\texorpdfstring{isUsingShader()}{isUsingShader()}}
{\footnotesize\ttfamily bool Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Common\+::is\+Using\+Shader (\begin{DoxyParamCaption}\item[{\mbox{\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 \mbox{\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::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}!extractLayoutQualifiers@{extractLayoutQualifiers}}
\index{extractLayoutQualifiers@{extractLayoutQualifiers}!Ogre::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}}
\doxysubsubsection{\texorpdfstring{extractLayoutQualifiers()}{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::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}!setSkeletalAnimationIncluded@{setSkeletalAnimationIncluded}}
\index{setSkeletalAnimationIncluded@{setSkeletalAnimationIncluded}!Ogre::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}}
\doxysubsubsection{\texorpdfstring{setSkeletalAnimationIncluded()}{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::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}!isSkeletalAnimationIncluded@{isSkeletalAnimationIncluded}}
\index{isSkeletalAnimationIncluded@{isSkeletalAnimationIncluded}!Ogre::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}}
\doxysubsubsection{\texorpdfstring{isSkeletalAnimationIncluded()}{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::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}!getGLProgramHandle@{getGLProgramHandle}}
\index{getGLProgramHandle@{getGLProgramHandle}!Ogre::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}}
\doxysubsubsection{\texorpdfstring{getGLProgramHandle()}{getGLProgramHandle()}}
{\footnotesize\ttfamily \mbox{\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. 

\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::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}!activate@{activate}}
\index{activate@{activate}!Ogre::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}}
\doxysubsubsection{\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 \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_separable_program_aedab89a93c49cc2d88c4f564fcc9aa2b}{Ogre\+::\+G\+L\+S\+L\+Separable\+Program}}, \mbox{\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}}, \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_monolithic_program_a39d6ede7c386222cfc16a31deb0a4126}{Ogre\+::\+G\+L\+S\+L\+Monolithic\+Program}}, \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_program_pipeline_aa2bbf63617d7c69b0d7bd23c1c64cc64}{Ogre\+::\+G\+L\+S\+L\+E\+S\+Program\+Pipeline}}, and \mbox{\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::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}!updateUniforms@{updateUniforms}}
\index{updateUniforms@{updateUniforms}!Ogre::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}}
\doxysubsubsection{\texorpdfstring{updateUniforms()}{updateUniforms()}}
{\footnotesize\ttfamily virtual void Ogre\+::\+G\+L\+S\+L\+Program\+Common\+::update\+Uniforms (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespace_ogre_aff0eec6634048fd4d65b785264243e6c}{Gpu\+Program\+Parameters\+Shared\+Ptr}}}]{params,  }\item[{\mbox{\hyperlink{namespace_ogre_aa8263b218e7d187ad5ef03a73a6ad7fd}{uint16}}}]{mask,  }\item[{\mbox{\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 \mbox{\hyperlink{class_ogre_1_1_gpu_program_parameters}{Gpu\+Program\+Parameters}}. 

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

Implemented in \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_separable_program_ae91bba55a10cf25319116f906ca09382}{Ogre\+::\+G\+L\+S\+L\+Separable\+Program}}, \mbox{\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}}, \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_monolithic_program_a41f26aa8518b54da2a5a9d1af59f6316}{Ogre\+::\+G\+L\+S\+L\+Monolithic\+Program}}, \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_e_s_link_program_abc783f9eba105adf7d23221ee4ee7415}{Ogre\+::\+G\+L\+S\+L\+E\+S\+Link\+Program}}, and \mbox{\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_ac66f9ef286cd589cfcef422988e51717}\label{class_ogre_1_1_g_l_s_l_program_common_ac66f9ef286cd589cfcef422988e51717}} 
\index{Ogre::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}!updateUniformBlocks@{updateUniformBlocks}}
\index{updateUniformBlocks@{updateUniformBlocks}!Ogre::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}}
\doxysubsubsection{\texorpdfstring{updateUniformBlocks()}{updateUniformBlocks()}}
{\footnotesize\ttfamily void Ogre\+::\+G\+L\+S\+L\+Program\+Common\+::update\+Uniform\+Blocks (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}



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

Normally called by G\+L\+Render\+System\+::bind\+Parameters() just before rendering occurs. \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::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}!getFixedAttributeIndex@{getFixedAttributeIndex}}
\index{getFixedAttributeIndex@{getFixedAttributeIndex}!Ogre::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}}
\doxysubsubsection{\texorpdfstring{getFixedAttributeIndex()}{getFixedAttributeIndex()}}
{\footnotesize\ttfamily static \mbox{\hyperlink{namespace_ogre_a1c37a43c04753c9ae0c17108c9e6c9d2}{int32}} Ogre\+::\+G\+L\+S\+L\+Program\+Common\+::get\+Fixed\+Attribute\+Index (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group___render_system_ga0a62b3f2ede8992ff365bb013a8bc00d}{Vertex\+Element\+Semantic}}}]{semantic,  }\item[{\mbox{\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::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}!useTightAttributeLayout@{useTightAttributeLayout}}
\index{useTightAttributeLayout@{useTightAttributeLayout}!Ogre::GLSLESProgramCommon@{Ogre::GLSLESProgramCommon}}
\doxysubsubsection{\texorpdfstring{useTightAttributeLayout()}{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 
\mbox{\hyperlink{_ogre_g_l_s_l_e_s_program_common_8h}{Ogre\+G\+L\+S\+L\+E\+S\+Program\+Common.\+h}}\end{DoxyCompactItemize}
