\hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program}{}\doxysection{Ogre\+::G\+L\+SL\+::G\+L\+S\+L\+Link\+Program Class Reference}
\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program}\index{Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}}


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




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



Inheritance diagram for Ogre\+::G\+L\+SL\+::G\+L\+S\+L\+Link\+Program\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=241pt]{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program__inherit__graph}
\end{center}
\end{figure}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_acda70fe409f1b838a3e440b142fdcc6c}{G\+L\+S\+L\+Link\+Program}} (\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_program}{G\+L\+S\+L\+Program}} $\ast$vertex\+Program, \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_program}{G\+L\+S\+L\+Program}} $\ast$geometry\+Program, \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_program}{G\+L\+S\+L\+Program}} $\ast$fragment\+Program)
\begin{DoxyCompactList}\small\item\em Constructor should only be used by \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager}{G\+L\+S\+L\+Link\+Program\+Manager}}. \end{DoxyCompactList}\item 
\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_a3454d841472be4762db55ad17f9acc72}{$\sim$\+G\+L\+S\+L\+Link\+Program}} (void)
\item 
void \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_a1794be351d8f5c5752b3baeeb89cadb4}{activate}} (void)
\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_program_common_a297cb6dcdee44b084dc5b819c5e9a9e1}{extract\+Layout\+Qualifiers}} (void)
\item 
G\+Lhandle\+A\+RB \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_a1feb523f6223fac3d922744e466f2775}{get\+G\+L\+Handle}} (void) const
\begin{DoxyCompactList}\small\item\em Get the GL Handle for the program object. \end{DoxyCompactList}\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 
bool \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_a7ab634fd4b6987adc6226fb0a59adb8e}{is\+Attribute\+Valid}} (\mbox{\hyperlink{group___render_system_ga0a62b3f2ede8992ff365bb013a8bc00d}{Vertex\+Element\+Semantic}} semantic, \mbox{\hyperlink{namespace_ogre_ab6e842a18caf062ed73a5d3badd0dd4c}{uint}} index)
\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_1_1_g_l_s_l_link_program_a7b98d215002f25d3ce57e4bbf0f19444}{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 
void \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_aeab832b53d1471303e6d99e97fe3f4c5}{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)
\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}} Program Object. 



\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_acda70fe409f1b838a3e440b142fdcc6c}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_acda70fe409f1b838a3e440b142fdcc6c}} 
\index{Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}!GLSLLinkProgram@{GLSLLinkProgram}}
\index{GLSLLinkProgram@{GLSLLinkProgram}!Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}}
\doxysubsubsection{\texorpdfstring{GLSLLinkProgram()}{GLSLLinkProgram()}}
{\footnotesize\ttfamily Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+::\+G\+L\+S\+L\+Link\+Program (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_program}{G\+L\+S\+L\+Program}} $\ast$}]{vertex\+Program,  }\item[{\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_program}{G\+L\+S\+L\+Program}} $\ast$}]{geometry\+Program,  }\item[{\mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_program}{G\+L\+S\+L\+Program}} $\ast$}]{fragment\+Program }\end{DoxyParamCaption})}



Constructor should only be used by \mbox{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager}{G\+L\+S\+L\+Link\+Program\+Manager}}. 

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_a3454d841472be4762db55ad17f9acc72}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_a3454d841472be4762db55ad17f9acc72}} 
\index{Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}!````~GLSLLinkProgram@{$\sim$GLSLLinkProgram}}
\index{````~GLSLLinkProgram@{$\sim$GLSLLinkProgram}!Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}}
\doxysubsubsection{\texorpdfstring{$\sim$GLSLLinkProgram()}{~GLSLLinkProgram()}}
{\footnotesize\ttfamily Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+::$\sim$\+G\+L\+S\+L\+Link\+Program (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_a1794be351d8f5c5752b3baeeb89cadb4}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_a1794be351d8f5c5752b3baeeb89cadb4}} 
\index{Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}!activate@{activate}}
\index{activate@{activate}!Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}}
\doxysubsubsection{\texorpdfstring{activate()}{activate()}}
{\footnotesize\ttfamily void Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+::activate (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}}



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



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

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_a7ab634fd4b6987adc6226fb0a59adb8e}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_a7ab634fd4b6987adc6226fb0a59adb8e}} 
\index{Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}!isAttributeValid@{isAttributeValid}}
\index{isAttributeValid@{isAttributeValid}!Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}}
\doxysubsubsection{\texorpdfstring{isAttributeValid()}{isAttributeValid()}}
{\footnotesize\ttfamily bool Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+::is\+Attribute\+Valid (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{group___render_system_ga0a62b3f2ede8992ff365bb013a8bc00d}{Vertex\+Element\+Semantic}}}]{semantic,  }\item[{\mbox{\hyperlink{namespace_ogre_ab6e842a18caf062ed73a5d3badd0dd4c}{uint}}}]{index }\end{DoxyParamCaption})}

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_aeab832b53d1471303e6d99e97fe3f4c5}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_aeab832b53d1471303e6d99e97fe3f4c5}} 
\index{Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}!updateUniforms@{updateUniforms}}
\index{updateUniforms@{updateUniforms}!Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}}
\doxysubsubsection{\texorpdfstring{updateUniforms()}{updateUniforms()}}
{\footnotesize\ttfamily void Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+::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 [virtual]}}



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\+Gpu\+Program\+::bind\+Parameters() just before rendering occurs. 

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

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_a1feb523f6223fac3d922744e466f2775}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_a1feb523f6223fac3d922744e466f2775}} 
\index{Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}!getGLHandle@{getGLHandle}}
\index{getGLHandle@{getGLHandle}!Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}}
\doxysubsubsection{\texorpdfstring{getGLHandle()}{getGLHandle()}}
{\footnotesize\ttfamily G\+Lhandle\+A\+RB Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+::get\+G\+L\+Handle (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get the GL Handle for the program object. 

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_a7b98d215002f25d3ce57e4bbf0f19444}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_a7b98d215002f25d3ce57e4bbf0f19444}} 
\index{Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}!isUsingShader@{isUsingShader}}
\index{isUsingShader@{isUsingShader}!Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}}
\doxysubsubsection{\texorpdfstring{isUsingShader()}{isUsingShader()}}
{\footnotesize\ttfamily bool Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+::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::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}!extractLayoutQualifiers@{extractLayoutQualifiers}}
\index{extractLayoutQualifiers@{extractLayoutQualifiers}!Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}}
\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::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}!setSkeletalAnimationIncluded@{setSkeletalAnimationIncluded}}
\index{setSkeletalAnimationIncluded@{setSkeletalAnimationIncluded}!Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}}
\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::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}!isSkeletalAnimationIncluded@{isSkeletalAnimationIncluded}}
\index{isSkeletalAnimationIncluded@{isSkeletalAnimationIncluded}!Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}}
\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::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}!getGLProgramHandle@{getGLProgramHandle}}
\index{getGLProgramHandle@{getGLProgramHandle}!Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}}
\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_ac66f9ef286cd589cfcef422988e51717}\label{class_ogre_1_1_g_l_s_l_program_common_ac66f9ef286cd589cfcef422988e51717}} 
\index{Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}!updateUniformBlocks@{updateUniformBlocks}}
\index{updateUniformBlocks@{updateUniformBlocks}!Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}}
\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::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}!getFixedAttributeIndex@{getFixedAttributeIndex}}
\index{getFixedAttributeIndex@{getFixedAttributeIndex}!Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}}
\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::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}!useTightAttributeLayout@{useTightAttributeLayout}}
\index{useTightAttributeLayout@{useTightAttributeLayout}!Ogre::GLSL::GLSLLinkProgram@{Ogre::GLSL::GLSLLinkProgram}}
\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_link_program_8h}{Ogre\+G\+L\+S\+L\+Link\+Program.\+h}}\end{DoxyCompactItemize}
