\hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager}{}\section{Ogre\+:\+:G\+L\+SL\+:\+:G\+L\+S\+L\+Link\+Program\+Manager Class Reference}
\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager}\index{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}}


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



Inheritance diagram for Ogre\+:\+:G\+L\+SL\+:\+:G\+L\+S\+L\+Link\+Program\+Manager\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager__inherit__graph}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_aa19f5f6782aa02ef1486de45d13e2646}{G\+L\+S\+L\+Link\+Program\+Manager} (void)
\item 
\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a240412fc8977a7de077756fb280abbfc}{$\sim$\+G\+L\+S\+L\+Link\+Program\+Manager} (void)
\item 
void \hyperlink{class_ogre_1_1_g_l_s_l_program_manager_common_af0074b30d327b54e5f352ca64612a043}{destroy\+All\+By\+Shader} (\hyperlink{class_ogre_1_1_g_l_s_l_shader_common}{G\+L\+S\+L\+Shader\+Common} $\ast$shader)
\begin{DoxyCompactList}\small\item\em Destroy all programs which referencing this shader. \end{DoxyCompactList}\item 
void \hyperlink{class_ogre_1_1_g_l_s_l_program_manager_common_ae8a109b69705dcab009b69f6334c58b1}{extract\+Uniforms\+From\+G\+L\+SL} (const \hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String} \&src, \hyperlink{struct_ogre_1_1_gpu_named_constants}{Gpu\+Named\+Constants} \&constant\+Defs, const \hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String} \&filename)
\begin{DoxyCompactList}\small\item\em Populate a list of uniforms based on \hyperlink{namespace_ogre_1_1_g_l_s_l}{G\+L\+SL} source and store them in \hyperlink{struct_ogre_1_1_gpu_named_constants}{Gpu\+Named\+Constants}. \end{DoxyCompactList}\item 
\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program}{G\+L\+S\+L\+Link\+Program} $\ast$ \hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a0e53b3cfa2d6953dfa256d6be2edad23}{get\+Active\+Link\+Program} (void)
\begin{DoxyCompactList}\small\item\em Get the program object that links the two active shader objects together if a program object was not already created and linked a new one is created and linked. \end{DoxyCompactList}\item 
void \hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_adb74057cde35c09f79fc1326d9d415a0}{set\+Active\+Fragment\+Shader} (\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_program}{G\+L\+S\+L\+Program} $\ast$fragment\+Gpu\+Program)
\begin{DoxyCompactList}\small\item\em Set the active fragment shader for the next rendering state. \end{DoxyCompactList}\item 
void \hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a8053d12cc61214f7c24910c535304fb8}{set\+Active\+Geometry\+Shader} (\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_program}{G\+L\+S\+L\+Program} $\ast$geometry\+Gpu\+Program)
\begin{DoxyCompactList}\small\item\em Set the active geometry shader for the next rendering state. \end{DoxyCompactList}\item 
void \hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a82614c90ed5243793f4d53a564e5c4dc}{set\+Active\+Vertex\+Shader} (\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_program}{G\+L\+S\+L\+Program} $\ast$vertex\+Gpu\+Program)
\begin{DoxyCompactList}\small\item\em Set the active vertex shader for the next rendering state. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
static void \hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a131bff56193f87fd404488f91a6ddb60}{extract\+Uniforms} (G\+Lhandle\+A\+RB program\+Object, const \hyperlink{group___materials_gae4823c1377e5d4c312a3da9d1cb8534a}{Gpu\+Constant\+Definition\+Map} $\ast$vertex\+Constant\+Defs, const \hyperlink{group___materials_gae4823c1377e5d4c312a3da9d1cb8534a}{Gpu\+Constant\+Definition\+Map} $\ast$geometry\+Constant\+Defs, const \hyperlink{group___materials_gae4823c1377e5d4c312a3da9d1cb8534a}{Gpu\+Constant\+Definition\+Map} $\ast$fragment\+Constant\+Defs, \hyperlink{namespace_ogre_ab6bb0d65dc078300d6e0459f926292b4}{G\+L\+Uniform\+Reference\+List} \&\hyperlink{struct_ogre_1_1list}{list})
\begin{DoxyCompactList}\small\item\em Populate a list of uniforms based on a program object. \end{DoxyCompactList}\item 
static \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} \& \hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a1ef283a86b06d0ebfb0ce1dbf085c9b4}{get\+Singleton} (void)
\item 
static \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} $\ast$ \hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a7206d3a68127a05f37b7e4fde979490b}{get\+Singleton\+Ptr} (void)
\end{DoxyCompactItemize}


\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_aa19f5f6782aa02ef1486de45d13e2646}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_aa19f5f6782aa02ef1486de45d13e2646}} 
\index{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}!G\+L\+S\+L\+Link\+Program\+Manager@{G\+L\+S\+L\+Link\+Program\+Manager}}
\index{G\+L\+S\+L\+Link\+Program\+Manager@{G\+L\+S\+L\+Link\+Program\+Manager}!Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}}
\subsubsection{\texorpdfstring{G\+L\+S\+L\+Link\+Program\+Manager()}{GLSLLinkProgramManager()}}
{\footnotesize\ttfamily Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager\+::\+G\+L\+S\+L\+Link\+Program\+Manager (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}

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



\subsection{Member Function Documentation}
\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a0e53b3cfa2d6953dfa256d6be2edad23}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a0e53b3cfa2d6953dfa256d6be2edad23}} 
\index{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}!get\+Active\+Link\+Program@{get\+Active\+Link\+Program}}
\index{get\+Active\+Link\+Program@{get\+Active\+Link\+Program}!Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}}
\subsubsection{\texorpdfstring{get\+Active\+Link\+Program()}{getActiveLinkProgram()}}
{\footnotesize\ttfamily \hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program}{G\+L\+S\+L\+Link\+Program}$\ast$ Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager\+::get\+Active\+Link\+Program (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



Get the program object that links the two active shader objects together if a program object was not already created and linked a new one is created and linked. 

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_adb74057cde35c09f79fc1326d9d415a0}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_adb74057cde35c09f79fc1326d9d415a0}} 
\index{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}!set\+Active\+Fragment\+Shader@{set\+Active\+Fragment\+Shader}}
\index{set\+Active\+Fragment\+Shader@{set\+Active\+Fragment\+Shader}!Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}}
\subsubsection{\texorpdfstring{set\+Active\+Fragment\+Shader()}{setActiveFragmentShader()}}
{\footnotesize\ttfamily void Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager\+::set\+Active\+Fragment\+Shader (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_program}{G\+L\+S\+L\+Program} $\ast$}]{fragment\+Gpu\+Program }\end{DoxyParamCaption})}



Set the active fragment shader for the next rendering state. 

The active program object will be cleared. Normally called from the \hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_gpu_program_a8448f53facf57d527a1121b89fb541ce}{G\+L\+S\+L\+Gpu\+Program\+::bind\+Program} and unbind\+Program methods \mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a8053d12cc61214f7c24910c535304fb8}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a8053d12cc61214f7c24910c535304fb8}} 
\index{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}!set\+Active\+Geometry\+Shader@{set\+Active\+Geometry\+Shader}}
\index{set\+Active\+Geometry\+Shader@{set\+Active\+Geometry\+Shader}!Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}}
\subsubsection{\texorpdfstring{set\+Active\+Geometry\+Shader()}{setActiveGeometryShader()}}
{\footnotesize\ttfamily void Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager\+::set\+Active\+Geometry\+Shader (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_program}{G\+L\+S\+L\+Program} $\ast$}]{geometry\+Gpu\+Program }\end{DoxyParamCaption})}



Set the active geometry shader for the next rendering state. 

The active program object will be cleared. Normally called from the \hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_gpu_program_a8448f53facf57d527a1121b89fb541ce}{G\+L\+S\+L\+Gpu\+Program\+::bind\+Program} and unbind\+Program methods \mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a82614c90ed5243793f4d53a564e5c4dc}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a82614c90ed5243793f4d53a564e5c4dc}} 
\index{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}!set\+Active\+Vertex\+Shader@{set\+Active\+Vertex\+Shader}}
\index{set\+Active\+Vertex\+Shader@{set\+Active\+Vertex\+Shader}!Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}}
\subsubsection{\texorpdfstring{set\+Active\+Vertex\+Shader()}{setActiveVertexShader()}}
{\footnotesize\ttfamily void Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager\+::set\+Active\+Vertex\+Shader (\begin{DoxyParamCaption}\item[{\hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_program}{G\+L\+S\+L\+Program} $\ast$}]{vertex\+Gpu\+Program }\end{DoxyParamCaption})}



Set the active vertex shader for the next rendering state. 

The active program object will be cleared. Normally called from the \hyperlink{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_gpu_program_a8448f53facf57d527a1121b89fb541ce}{G\+L\+S\+L\+Gpu\+Program\+::bind\+Program} and unbind\+Program methods \mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a131bff56193f87fd404488f91a6ddb60}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a131bff56193f87fd404488f91a6ddb60}} 
\index{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}!extract\+Uniforms@{extract\+Uniforms}}
\index{extract\+Uniforms@{extract\+Uniforms}!Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}}
\subsubsection{\texorpdfstring{extract\+Uniforms()}{extractUniforms()}}
{\footnotesize\ttfamily static void Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager\+::extract\+Uniforms (\begin{DoxyParamCaption}\item[{G\+Lhandle\+A\+RB}]{program\+Object,  }\item[{const \hyperlink{group___materials_gae4823c1377e5d4c312a3da9d1cb8534a}{Gpu\+Constant\+Definition\+Map} $\ast$}]{vertex\+Constant\+Defs,  }\item[{const \hyperlink{group___materials_gae4823c1377e5d4c312a3da9d1cb8534a}{Gpu\+Constant\+Definition\+Map} $\ast$}]{geometry\+Constant\+Defs,  }\item[{const \hyperlink{group___materials_gae4823c1377e5d4c312a3da9d1cb8534a}{Gpu\+Constant\+Definition\+Map} $\ast$}]{fragment\+Constant\+Defs,  }\item[{\hyperlink{namespace_ogre_ab6bb0d65dc078300d6e0459f926292b4}{G\+L\+Uniform\+Reference\+List} \&}]{list }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Populate a list of uniforms based on a program object. 


\begin{DoxyParams}{Parameters}
{\em program\+Object} & Handle to the program object to query \\
\hline
{\em vertex\+Constant\+Defs} & Definition of the constants extracted from the vertex program, used to match up physical buffer indexes with program uniforms. May be null if there is no vertex program. \\
\hline
{\em geometry\+Constant\+Defs} & Definition of the constants extracted from the geometry program, used to match up physical buffer indexes with program uniforms. May be null if there is no geometry program. \\
\hline
{\em fragment\+Constant\+Defs} & Definition of the constants extracted from the fragment program, used to match up physical buffer indexes with program uniforms. May be null if there is no fragment program. \\
\hline
{\em list} & The list to populate (will not be cleared before adding, clear it yourself before calling this if that\textquotesingle{}s what you want). \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a1ef283a86b06d0ebfb0ce1dbf085c9b4}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a1ef283a86b06d0ebfb0ce1dbf085c9b4}} 
\index{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}!get\+Singleton@{get\+Singleton}}
\index{get\+Singleton@{get\+Singleton}!Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}}
\subsubsection{\texorpdfstring{get\+Singleton()}{getSingleton()}}
{\footnotesize\ttfamily static \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}\& Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager\+::get\+Singleton (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a7206d3a68127a05f37b7e4fde979490b}\label{class_ogre_1_1_g_l_s_l_1_1_g_l_s_l_link_program_manager_a7206d3a68127a05f37b7e4fde979490b}} 
\index{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}!get\+Singleton\+Ptr@{get\+Singleton\+Ptr}}
\index{get\+Singleton\+Ptr@{get\+Singleton\+Ptr}!Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}}
\subsubsection{\texorpdfstring{get\+Singleton\+Ptr()}{getSingletonPtr()}}
{\footnotesize\ttfamily static \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}$\ast$ Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager\+::get\+Singleton\+Ptr (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_program_manager_common_ae8a109b69705dcab009b69f6334c58b1}\label{class_ogre_1_1_g_l_s_l_program_manager_common_ae8a109b69705dcab009b69f6334c58b1}} 
\index{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}!extract\+Uniforms\+From\+G\+L\+SL@{extract\+Uniforms\+From\+G\+L\+SL}}
\index{extract\+Uniforms\+From\+G\+L\+SL@{extract\+Uniforms\+From\+G\+L\+SL}!Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}}
\subsubsection{\texorpdfstring{extract\+Uniforms\+From\+G\+L\+S\+L()}{extractUniformsFromGLSL()}}
{\footnotesize\ttfamily void Ogre\+::\+G\+L\+S\+L\+Program\+Manager\+Common\+::extract\+Uniforms\+From\+G\+L\+SL (\begin{DoxyParamCaption}\item[{const \hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String} \&}]{src,  }\item[{\hyperlink{struct_ogre_1_1_gpu_named_constants}{Gpu\+Named\+Constants} \&}]{constant\+Defs,  }\item[{const \hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String} \&}]{filename }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inherited]}}



Populate a list of uniforms based on \hyperlink{namespace_ogre_1_1_g_l_s_l}{G\+L\+SL} source and store them in \hyperlink{struct_ogre_1_1_gpu_named_constants}{Gpu\+Named\+Constants}. 


\begin{DoxyParams}{Parameters}
{\em src} & Reference to the source code. \\
\hline
{\em constant\+Defs} & The defs to populate (will not be cleared before adding, clear it yourself before calling this if that\textquotesingle{}s what you want). \\
\hline
{\em filename} & The file name this came from, for logging errors. \\
\hline
\end{DoxyParams}
\mbox{\Hypertarget{class_ogre_1_1_g_l_s_l_program_manager_common_af0074b30d327b54e5f352ca64612a043}\label{class_ogre_1_1_g_l_s_l_program_manager_common_af0074b30d327b54e5f352ca64612a043}} 
\index{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}!destroy\+All\+By\+Shader@{destroy\+All\+By\+Shader}}
\index{destroy\+All\+By\+Shader@{destroy\+All\+By\+Shader}!Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager@{Ogre\+::\+G\+L\+S\+L\+::\+G\+L\+S\+L\+Link\+Program\+Manager}}
\subsubsection{\texorpdfstring{destroy\+All\+By\+Shader()}{destroyAllByShader()}}
{\footnotesize\ttfamily void Ogre\+::\+G\+L\+S\+L\+Program\+Manager\+Common\+::destroy\+All\+By\+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})\hspace{0.3cm}{\ttfamily [inherited]}}



Destroy all programs which referencing this shader. 



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